2015-11-25 1 views
0

Я хотел бы знать, как я могу комбинировать в одном коде свой светодиод и пьезо-зуммер. Я хочу остановить музыку, как только я нажимаю кнопку, и включить свет (LED) в тот же момент. Мой код не работает, не могли бы вы рассказать, что я должен делать?Как я могу объединить светодиод и пьезо с кнопкой на ардуине?

 int buttonState = 0; 
     int speakerPin = 10; 
     int buttonPin= 7; 
     int frequency = 500; 
     int ledPin = 13; 
     int length = 17; // the number of notes 
     char notes[] = "gcefgcefgcefgcefga "; // a space represents a rest 
     int beats[] = {2,2,1,1,2,2,1,1,2,2,1,1,2,2,1,1}; 
     int tempo = 250; 

     void setup() {    
     pinMode(speakerPin, OUTPUT); 
     pinMode(ledPin, OUTPUT); 
     pinMode(buttonPin,INPUT); 
     } 

     void loop() { 
     buttonState = digitalRead(buttonPin); 

     if (buttonState==HIGH){ 
      digitalWrite(ledPin, HIGH); 
      noTone(speakerPin); 
     }else { 
      char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' }; 
      char notes[] = "gcefgcefgcefgcefga ";   
      digitalWrite(ledPin, LOW); 
      digitalWrite(speakerPin,HIGH); 
      if (long i = 0; i < duration * 5000L; i += tone * 15) { 

      } 

     void playTone(int tone, int duration) { 

      for (long i = 0; i < duration * 5000L; i += tone * 15) { 
      if (buttonState==LOW){ 
      digitalWrite(speakerPin, HIGH); 
      delayMicroseconds(tone); 
      digitalWrite(speakerPin, LOW); 
      delayMicroseconds(tone); 
      } 
     } 
     } 

     }} 
+0

где noTone определено? и почему включить playTone, если вы его не используете? Какая доска? – lxx

+0

if (long i = 0; i jabujavi

ответ

1

может быть несколько разных причин, почему ваш код не работает. Для начала: вы не определили noTone, и я не вижу Playtone фактически используется, но на высоком уровне, что вы пытаетесь сделать, это довольно просто, и это должно помочь псевдокод:

void loop() { 
    buttonState = digitalRead(buttonPin); 
    if buttonState==LOW 

    playTone(); 
    digitalWrite(ledPin, LOW); 
    else {break out of loop} 
    //add in your pause here 
    delayMicroseconds(pause);//I'm not sure why you put tone here in your code, just initialize int of 1000 or something 

} 

вас получил это! надеюсь это поможет!

Смежные вопросы