buzzer.cpp 1.3 KB

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