-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathArduinoBuzzerSoundsRG.cpp
More file actions
136 lines (122 loc) · 4.08 KB
/
ArduinoBuzzerSoundsRG.cpp
File metadata and controls
136 lines (122 loc) · 4.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include "ArduinoBuzzerSoundsRG.h"
/* ############### BuzzerSoundsRgBase ############### */
// Constructor
BuzzerSoundsRgBase::BuzzerSoundsRgBase(int buzzerPin) : _buzzerPin(buzzerPin) {
pinMode(_buzzerPin, OUTPUT); // Set Pin for Buzzer as output
}
// Destructor
BuzzerSoundsRgBase::~BuzzerSoundsRgBase() {
digitalWrite(_buzzerPin, LOW);
}
// public methods
void BuzzerSoundsRgBase::playSound(SoundType sound) {
switch (sound) {
case SoundType::DbReadError:
db_read_error_sound();
break;
case SoundType::NoAuth:
no_auth_sound();
break;
case SoundType::AuthOk:
auth_ok_sound();
break;
case SoundType::SOS:
sos_sound();
break;
case SoundType::SMS:
sms_sound();
break;
case SoundType::OK:
ok_sound();
break;
}
}
// Morse code building blocks — each produces a single beep without trailing pause.
// Pauses between elements (DitPause) and between letters (DahPause) are added
// explicitly in the sound methods to ensure correct Morse code timing.
void BuzzerSoundsRgBase::dit() {
digitalWrite(_buzzerPin, HIGH);
pause(MorseCodeTiming::DitLength);
digitalWrite(_buzzerPin, LOW);
}
void BuzzerSoundsRgBase::dah() {
digitalWrite(_buzzerPin, HIGH);
pause(MorseCodeTiming::DahLength);
digitalWrite(_buzzerPin, LOW);
}
void BuzzerSoundsRgBase::db_read_error_sound() {
// Morse "U" (..-) — two short beeps followed by a long one.
// Suitable for data/read errors: noticeable but not alarming.
dit(); pause(MorseCodeTiming::DitPause);
dit(); pause(MorseCodeTiming::DitPause);
dah();
}
void BuzzerSoundsRgBase::no_auth_sound() {
// Custom pattern (.....-) — five rapid short beeps + one long tone.
// Not a standard Morse character. The insistent rapid beeping
// followed by a long tone clearly signals "access denied".
dit(); pause(MorseCodeTiming::DitPause);
dit(); pause(MorseCodeTiming::DitPause);
dit(); pause(MorseCodeTiming::DitPause);
dit(); pause(MorseCodeTiming::DitPause);
dit(); pause(MorseCodeTiming::DitPause);
dah();
}
void BuzzerSoundsRgBase::auth_ok_sound() {
// Morse "A" (.-) — one short + one long beep.
// Quick and pleasant confirmation: "authentication successful".
dit(); pause(MorseCodeTiming::DitPause);
dah();
}
void BuzzerSoundsRgBase::sos_sound() {
// Morse "SOS" (...---...) — the universal distress signal.
// Use for critical system errors or emergencies that require immediate attention.
// S (...)
dit(); pause(MorseCodeTiming::DitPause);
dit(); pause(MorseCodeTiming::DitPause);
dit();
pause(MorseCodeTiming::DahPause); // letter gap S -> O
// O (---)
dah(); pause(MorseCodeTiming::DitPause);
dah(); pause(MorseCodeTiming::DitPause);
dah();
pause(MorseCodeTiming::DahPause); // letter gap O -> S
// S (...)
dit(); pause(MorseCodeTiming::DitPause);
dit(); pause(MorseCodeTiming::DitPause);
dit();
}
void BuzzerSoundsRgBase::sms_sound() {
// Morse "SMS" (...--...) — the classic SMS notification pattern.
// Use for incoming messages, notifications, or non-critical alerts.
// S (...)
dit(); pause(MorseCodeTiming::DitPause);
dit(); pause(MorseCodeTiming::DitPause);
dit();
pause(MorseCodeTiming::DahPause); // letter gap S -> M
// M (--)
dah(); pause(MorseCodeTiming::DitPause);
dah();
pause(MorseCodeTiming::DahPause); // letter gap M -> S
// S (...)
dit(); pause(MorseCodeTiming::DitPause);
dit(); pause(MorseCodeTiming::DitPause);
dit();
}
void BuzzerSoundsRgBase::ok_sound() {
// Morse "OK" (-----.-) — acknowledgment/ready signal.
// Use for successful operations, boot-up confirmation, or "system ready".
// O (---)
dah(); pause(MorseCodeTiming::DitPause);
dah(); pause(MorseCodeTiming::DitPause);
dah();
pause(MorseCodeTiming::DahPause); // letter gap O -> K
// K (-.- )
dah(); pause(MorseCodeTiming::DitPause);
dit(); pause(MorseCodeTiming::DitPause);
dah();
}
/* ############### BuzzerSoundsRgNonRtos ############### */
void BuzzerSoundsRgNonRtos::pause(BuzzerSoundsRgBase::MorseCodeTiming pause) {
delay(static_cast<int>(pause)); // Standard Arduino delay
}