音()不工作

Tone() not working

我对 Arduino 很陌生(因为这个周末我必须学习它用于学校项目)并且我无法让我的压电扬声器为闹钟发出声音。当草图运行时,一切正常。 LED 闪烁,但蜂鸣器不发声,这很奇怪,因为 LED 和蜂鸣器命令在草图中相互穿插。如果有人能帮我解决这个小问题,将不胜感激!

我只包含了 void 循环以供参考,但已经设置:

int buzzerPin = 1;

并且在 setup() 函数中:

pinMode(buzzerPin, OUTPUT); 
void  loop() {
  //MAKE LCD BLUE
  setBacklight(0, 0, 255);
  digitalClockDisplay(); // time displays on LCD
  for (int k = 0; k < count; k++) {
    if (hour() == h[k] && minute() == m[k] && second() == 00) {
      Serial.println(amount[k]);
      Serial.print(" ");
      Serial.print(med[k]);
      setBacklight(0, 0, 255);
      lcd.setCursor(0, 0);
      lcd.print(amount[k]);
      lcd.print(" ");
      lcd.print(med[k]);
      lcd.print("          ");
      for (int m = 0; m < 1000; m++) {
        setBacklight(0, 0, 255);
        lcd.setCursor(0, 1);
        lcd.print(hour()); //prints real time
        printDigits(minute());
        printDigits(second());
        digitalWrite (led, HIGH);
        tone(buzzerPin, buzzerFrequency);
        delay(buzzerInterval);
        noTone(buzzerPin);
        delay(buzzerInterval);
        tone(buzzerPin, buzzerFrequency);
        delay(buzzerInterval);
        noTone(buzzerPin);
        digitalWrite (led, LOW);
        delay(buzzerInterval);
        // Snooze and Stop
        if (digitalRead(stopButton) == HIGH) {
          digitalWrite(led, LOW); // turn the LED off by making the
          voltage LOW
          Serial.print("Alarm Stopped");
          noTone(buzzerPin);
          setBacklight(0, 255, 0); // set background to green
          delay(5000); // delay for 5 seconds
          break;
        }
        if (digitalRead(snoozeButton) == HIGH) {
          digitalWrite(led, LOW);
          Serial.print("Snooze for 5 seconds");
          noTone(buzzerPin);
          setBacklight(255, 0, 0); // set background to red
          delay(snoozeTime);
        }
      }
    } //if hour and min match
  } // k loop
} // void loop

尝试将 buzzerPin 连接到 PWM 引脚(例如:Arduino Uno 上的引脚 3、5、9、10、11)。

因为tone()函数只是支持PWM引脚(在你的情况下引脚1不是PWM引脚)。