如何将LED和piezzo与arduino上的按钮组合在一起?

时间:2015-11-25 23:04:59

标签: arduino led qpushbutton speaker

我想知道如何在一个代码中结合我的LED和piezz蜂鸣器。我想在按下按钮后立即停止音乐,并在同一时刻打开灯(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);
          } 
        }
      }

      }} 

1 个答案:

答案 0 :(得分:1)

为什么你的代码不起作用可能有几个不同的原因。 对于初学者:你还没有定义noTone而且我没有看到playTone实际被使用,但是在高级别你正在尝试做的很简单,这个伪代码应该有所帮助:

var doc = {
    version: '1.7',
    entries: [{
        date: '11/11/10',
        files: [{
            name: 100,
            executable: false
        },
        {
            name: 101,
            executable: false
        }]
    },
    {
        date: '11/12/10',
        files: [{
            name: 200,
            executable: false
        },
        {
            name: 201,
            executable: false
        }]
    },
    {
        date: '11/13/10',
        files: [{
            name: 300,
            executable: false
        }]
    },
    {
        date: '11/14/10',
        files: [{
            name: 400,
            executable: false
        }]
    }]
};

doc.entries.map(function(entry){

    entry.files.map(function(file){

        getFile(file, function(err, result){
            if(err){
                throw Error(err)
            }

            uploadResult(result, function(err, status){
                WriteOnDb(file.name, status, function(err, result){ ... });
            });
        })
    });
});
你得到了这个!希望这有帮助!