语气()不起作用

时间:2018-04-17 16:37:18

标签: c++ arduino arduino-uno

我对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

1 个答案:

答案 0 :(得分:1)

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

Arduino PWM pins image

因为tone()功能仅支持PWM引脚(在您的情况下,引脚1不是PWM引脚)。