34 lines
675 B
C++
34 lines
675 B
C++
#include "beeper.h"
|
|
|
|
#include <Arduino.h>
|
|
|
|
#define BEEPER_GPIO 22
|
|
#define BEEPER_INVERT true
|
|
|
|
unsigned long beeperDuration = 0;
|
|
|
|
unsigned long beeperLast = 0;
|
|
|
|
void beeperEnable(const bool enabled) {
|
|
digitalWrite(BEEPER_GPIO, (enabled ^ BEEPER_INVERT) ? HIGH : LOW);
|
|
}
|
|
|
|
void beeperSetup() {
|
|
pinMode(BEEPER_GPIO, OUTPUT);
|
|
beeperEnable(false);
|
|
}
|
|
|
|
void beeperLoop() {
|
|
const auto now = millis();
|
|
if (beeperDuration != 0 && now - beeperLast >= beeperDuration) {
|
|
beeperEnable(false);
|
|
beeperDuration = 0;
|
|
}
|
|
}
|
|
|
|
void beep(const unsigned long duration) {
|
|
beeperDuration = duration;
|
|
beeperLast = millis();
|
|
beeperEnable(beeperDuration > 0);
|
|
}
|