buzzer.cpp 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #ifdef PIN_BUZZER
  2. #include "buzzer.h"
  3. void genericBuzzer::begin() {
  4. Serial.print("DBG: Setting up buzzer on pin ");
  5. Serial.println(PIN_BUZZER);
  6. #ifdef PIN_BUZZER_EN
  7. pinMode(PIN_BUZZER_EN, OUTPUT);
  8. digitalWrite(PIN_BUZZER_EN, HIGH);
  9. #endif
  10. quiet(false);
  11. pinMode(PIN_BUZZER, OUTPUT);
  12. startup();
  13. }
  14. void genericBuzzer::play(const char *melody) {
  15. if (isPlaying()) // interrupt existing
  16. {
  17. rtttl::stop();
  18. }
  19. if (_is_quiet) return;
  20. rtttl::begin(PIN_BUZZER,melody);
  21. // Serial.print("DBG: Playing melody - isQuiet: ");
  22. // Serial.println(isQuiet());
  23. }
  24. bool genericBuzzer::isPlaying() {
  25. return rtttl::isPlaying();
  26. }
  27. void genericBuzzer::loop() {
  28. if (!rtttl::done()) rtttl::play();
  29. }
  30. void genericBuzzer::startup() {
  31. play(startup_song);
  32. }
  33. void genericBuzzer::shutdown() {
  34. play(shutdown_song);
  35. }
  36. void genericBuzzer::quiet(bool buzzer_state) {
  37. _is_quiet = buzzer_state;
  38. }
  39. bool genericBuzzer::isQuiet() {
  40. return _is_quiet;
  41. }
  42. #endif // ifdef PIN_BUZZER