2015-11-25 2 views
0

Je voudrais savoir comment je peux combiner en un seul code mon LED et piezzo buzzer. Je veux arrêter la musique dès que j'appuie sur le bouton-poussoir, et allumer une lumière (LED) au même moment. Mon code ne fonctionne pas, pourriez-vous dire ce que je devrais faire?Comment combiner une LED et un piezzo avec un bouton poussoir sur arduino?

 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

Où est-ce que noTone est défini? et pourquoi inclure playTone si vous ne l'utilisez pas? Quel conseil? – lxx

+0

si (long i = 0; i jabujavi

Répondre

1

Il peut y avoir plusieurs raisons différentes pour lesquelles votre code ne fonctionne pas. Pour commencer: vous n'avez pas défini noTone et je ne vois pas Playtone effectivement utilisé, mais à un niveau élevé ce que vous essayez de faire est assez simple et cela devrait aider pseudocode:

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 

} 

vous je l'ai! J'espère que cela t'aides!