From cf9a1f07ed519cadd58e38794616d0a9596be4ae Mon Sep 17 00:00:00 2001 From: EnricoGuccii Date: Sun, 11 May 2025 13:55:44 +0200 Subject: add buzzer --- lib/buzzer/buzzer.cpp | 37 +++++++++++++++++++++++++++++++++++++ lib/buzzer/buzzer.h | 14 ++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 lib/buzzer/buzzer.cpp create mode 100644 lib/buzzer/buzzer.h (limited to 'lib/buzzer') diff --git a/lib/buzzer/buzzer.cpp b/lib/buzzer/buzzer.cpp new file mode 100644 index 0000000..a83ec22 --- /dev/null +++ b/lib/buzzer/buzzer.cpp @@ -0,0 +1,37 @@ +#include +#include "settings.h" +#include "buzzer.h" + +#define BUZZER_CHANNEL 3 +#define BUZZER_RESOLUTION 8 + +BUZZER::BUZZER() +{ + ledcSetup(BUZZER_CHANNEL, 2000, BUZZER_RESOLUTION); + ledcAttachPin(BUZZER_PIN, BUZZER_CHANNEL); +} + +void BUZZER::playTone(uint16_t frequency, uint32_t duration) +{ + ledcWriteTone(BUZZER_CHANNEL, frequency); + if (duration > 0) + { + delay(duration); + stop(); + } +} + +void BUZZER::playMelody(const uint16_t melody[][2], size_t length) +{ + + for (size_t i = 0; i < length; i++) + { + playTone(melody[i][0], melody[i][1]); + delay(50); + } +} + +void BUZZER::stop() +{ + ledcWriteTone(BUZZER_CHANNEL, 0); +} \ No newline at end of file diff --git a/lib/buzzer/buzzer.h b/lib/buzzer/buzzer.h new file mode 100644 index 0000000..f71a90a --- /dev/null +++ b/lib/buzzer/buzzer.h @@ -0,0 +1,14 @@ +#include +#include "settings.h" + +#pragma once + +class BUZZER +{ +public: + BUZZER(); + + void playTone(uint16_t frequency, uint32_t duration = 0); + void stop(); + void playMelody(const uint16_t melody[][2], size_t length); +}; -- cgit v1.2.3