我对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
答案 0 :(得分:1)
尝试将buzzerPin
连接到PWM引脚(例如:Arduino Uno上的引脚3,5,9,10,11)。
因为tone()
功能仅支持PWM引脚(在您的情况下,引脚1不是PWM引脚)。