音()不工作
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引脚)。
我对 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引脚)。