#include "beeper.h" #include #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); }