|
|
@@ -0,0 +1,54 @@
|
|
|
+#ifdef PIN_BUZZER
|
|
|
+#include "buzzer.h"
|
|
|
+
|
|
|
+void genericBuzzer::begin() {
|
|
|
+ Serial.print("DBG: Setting up buzzer on pin ");
|
|
|
+ Serial.println(PIN_BUZZER);
|
|
|
+ #ifdef PIN_BUZZER_EN
|
|
|
+ pinMode(PIN_BUZZER_EN, OUTPUT);
|
|
|
+ digitalWrite(PIN_BUZZER_EN, HIGH);
|
|
|
+ #endif
|
|
|
+
|
|
|
+ quiet(false);
|
|
|
+ pinMode(PIN_BUZZER, OUTPUT);
|
|
|
+ startup();
|
|
|
+}
|
|
|
+
|
|
|
+void genericBuzzer::play(const char *melody) {
|
|
|
+ if (isPlaying()) // interrupt existing
|
|
|
+ {
|
|
|
+ rtttl::stop();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (_is_quiet) return;
|
|
|
+
|
|
|
+ rtttl::begin(PIN_BUZZER,melody);
|
|
|
+// Serial.print("DBG: Playing melody - isQuiet: ");
|
|
|
+// Serial.println(isQuiet());
|
|
|
+}
|
|
|
+
|
|
|
+bool genericBuzzer::isPlaying() {
|
|
|
+ return rtttl::isPlaying();
|
|
|
+}
|
|
|
+
|
|
|
+void genericBuzzer::loop() {
|
|
|
+ if (!rtttl::done()) rtttl::play();
|
|
|
+}
|
|
|
+
|
|
|
+void genericBuzzer::startup() {
|
|
|
+ play(startup_song);
|
|
|
+}
|
|
|
+
|
|
|
+void genericBuzzer::shutdown() {
|
|
|
+ play(shutdown_song);
|
|
|
+}
|
|
|
+
|
|
|
+void genericBuzzer::quiet(bool buzzer_state) {
|
|
|
+ _is_quiet = buzzer_state;
|
|
|
+}
|
|
|
+
|
|
|
+bool genericBuzzer::isQuiet() {
|
|
|
+ return _is_quiet;
|
|
|
+}
|
|
|
+
|
|
|
+#endif // ifdef PIN_BUZZER
|