mirror of https://github.com/meshcore-dev/MeshCore
4 changed files with 112 additions and 1 deletions
@ -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
|
|||
@ -0,0 +1,36 @@ |
|||
#pragma once |
|||
|
|||
#include <Arduino.h> |
|||
#include <NonBlockingRtttl.h> |
|||
|
|||
/* class abstracts underlying RTTTL library
|
|||
|
|||
Just a simple imlementation to start. At the moment use same |
|||
melody for message and discovery |
|||
Suggest enum type for different sounds |
|||
- on message |
|||
- on discovery |
|||
|
|||
TODO |
|||
- make message ring tone configurable |
|||
|
|||
*/ |
|||
class genericBuzzer |
|||
{ |
|||
public: |
|||
void begin(); // set up buzzer port
|
|||
void play(const char *melody); // Generic play function
|
|||
void loop(); // loop driven-nonblocking
|
|||
void startup(); // play startup sound
|
|||
void shutdown(); // play shutdown sound
|
|||
bool isPlaying(); // returns true if a sound is still playing else false
|
|||
void quiet(bool buzzer_state); // enables or disables the buzzer
|
|||
bool isQuiet(); // get buzzer state on/off
|
|||
|
|||
private: |
|||
// gemini's picks:
|
|||
const char *startup_song = "Startup:d=4,o=5,b=160:16c6,16e6,8g6"; |
|||
const char *shutdown_song = "Shutdown:d=4,o=5,b=100:8g5,16e5,16c5"; |
|||
|
|||
bool _is_quiet = true; |
|||
}; |
|||
Loading…
Reference in new issue