/*
Morse Code Beeper
Arduino Uno R3
Piezo Buzzer:
+ -> Pin 8
- -> GND
*/
const int BUZZER = 8;
const int DOT = 200; // milliseconds
const int DASH = DOT * 3;
const int FREQ = 1000; // 1 kHz tone
void setup() {
Serial.begin(9600);
Serial.println("Morse Code Beeper");
Serial.println("Sending: SOS HELP");
delay(1000);
sendMessage("SOS HELP");
}
void loop() {
delay(5000);
sendMessage("SOS HELP");
}
void dot() {
tone(BUZZER, FREQ);
delay(DOT);
noTone(BUZZER);
delay(DOT);
}
void dash() {
tone(BUZZER, FREQ);
delay(DASH);
noTone(BUZZER);
delay(DOT);
}
void sendLetter(char c) {
switch (toupper(c)) {
case 'A': Serial.print(".- "); dot(); dash(); break;
case 'B': Serial.print("-... "); dash(); dot(); dot(); dot(); break;
case 'C': Serial.print("-.-. "); dash(); dot(); dash(); dot(); break;
case 'D': Serial.print("-.. "); dash(); dot(); dot(); break;
case 'E': Serial.print(". "); dot(); break;
case 'F': Serial.print("..-. "); dot(); dot(); dash(); dot(); break;
case 'G': Serial.print("--. "); dash(); dash(); dot(); break;
case 'H': Serial.print(".... "); dot(); dot(); dot(); dot(); break;
case 'I': Serial.print(".. "); dot(); dot(); break;
case 'J': Serial.print(".--- "); dot(); dash(); dash(); dash(); break;
case 'K': Serial.print("-.- "); dash(); dot(); dash(); break;
case 'L': Serial.print(".-.. "); dot(); dash(); dot(); dot(); break;
case 'M': Serial.print("-- "); dash(); dash(); break;
case 'N': Serial.print("-. "); dash(); dot(); break;
case 'O': Serial.print("--- "); dash(); dash(); dash(); break;
case 'P': Serial.print(".--. "); dot(); dash(); dash(); dot(); break;
case 'Q': Serial.print("--.- "); dash(); dash(); dot(); dash(); break;
case 'R': Serial.print(".-. "); dot(); dash(); dot(); break;
case 'S': Serial.print("... "); dot(); dot(); dot(); break;
case 'T': Serial.print("- "); dash(); break;
case 'U': Serial.print("..- "); dot(); dot(); dash(); break;
case 'V': Serial.print("...- "); dot(); dot(); dot(); dash(); break;
case 'W': Serial.print(".-- "); dot(); dash(); dash(); break;
case 'X': Serial.print("-..- "); dash(); dot(); dot(); dash(); break;
case 'Y': Serial.print("-.-- "); dash(); dot(); dash(); dash(); break;
case 'Z': Serial.print("--.. "); dash(); dash(); dot(); dot(); break;
}
// Letter gap
delay(DOT * 2);
}
void sendMessage(const char *msg) {
Serial.print("Text : ");
Serial.println(msg);
Serial.print("Morse: ");
while (*msg) {
if (*msg == ' ') {
Serial.print(" / ");
delay(DOT * 7); // Word gap
} else {
sendLetter(*msg);
}
msg++;
}
Serial.println();
Serial.println();
}