const int signalPin = 13;
const char* morseCode[] = {
".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---",
"-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-",
"...-", ".--", "-..-", "-.--", "--..",
"-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----."
};
void sendMorse(char c) {
if (c >= 'A' && c <= 'Z') {
for (const char* p = morseCode[c - 'A']; *p; p++) {
if (*p == '.') {
tone(signalPin, 1000, 250);
} else {
tone(signalPin, 1000, 750);
}
delay((*p == '.') ? 250 : 750);
noTone(signalPin);
delay(250);
}
delay(750);
} else if (c >= '0' && c <= '9') {
for (const char* p = morseCode[26 + (c - '0')]; *p; p++) {
if (*p == '.') {
tone(signalPin, 1000, 250);
} else {
tone(signalPin, 1000, 750);
}
delay((*p == '.') ? 250 : 750);
noTone(signalPin);
delay(250);
}
delay(750);
}
}
void setup() {
pinMode(signalPin, OUTPUT);
Serial.begin(115200);
Serial.println("Enter text to convert to Morse code:");
}
void loop() {
if (Serial.available()) {
String input = Serial.readStringUntil('\n');
input.toUpperCase();
for (char c : input) {
if (c >= 'A' && c <= 'Z') {
sendMorse(c);
} else if (c >= '0' && c <= '9') {
sendMorse(c);
} else if (c == ' ') {
delay(1500);
}
}
delay(2000);
}
}