#define LED 2
#define SPEAKER 8
int abstand = 330;
char alphabet[36] = {'A', 'B', 'C', 'D', 'E',
'F', 'G', 'H', 'I', 'J',
'K' ,'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X', 'Y',
'Z', '1', '2', '3', '4',
'5', '6', '7', '8', '9', '0'};
String morseCode[36] = {".-", "-...", "-.-.", "-..", ".",
"..-.", "--.", "....", "..", ".---",
"-.-", ".-..", "--", "-.", "---",
".--.", "--.-", ".-.", "...", "-",
"..-", "...-", ".--", "-..-", "-.--",
"--..", ".----", "..---", "...--", "....-",
".....", "-....", "--...", "---..", "----.", "-----"};
void sendePunktSignal(){
digitalWrite(LED, HIGH);
tone(SPEAKER, 770);
delay(abstand);
digitalWrite(LED, LOW);
noTone(SPEAKER);
delay(abstand);
}
void sendeStrichSignal(){
digitalWrite(LED, HIGH);
tone(SPEAKER, 770);
delay(abstand * 2);
digitalWrite(LED, LOW);
noTone(SPEAKER);
delay(abstand);
}
String zeichenZuMorse(char c)
{
String ruckgabe = "";
for (int i = 0; i < sizeof alphabet; i++)
{
if (alphabet[i] == c){
ruckgabe = morseCode[i];
return ruckgabe;
}
}
}
void morseZuSignal(String s)
{
for (int i = 0; i < s.length(); i++)
{
if(s[i] == '.')
{
sendePunktSignal();
}else if (s[i] == '-') {
sendeStrichSignal();
}
}
}
void setup() {
Serial.begin(9600);
pinMode(LED, OUTPUT);
pinMode(SPEAKER, OUTPUT);
}
void loop() {
String morseCode = zeichenZuMorse('S');
morseZuSignal(morseCode);
Serial.print(morseCode);
morseCode = zeichenZuMorse('O');
morseZuSignal(morseCode);
Serial.print(morseCode);
morseCode = zeichenZuMorse('S');
morseZuSignal(morseCode);
Serial.print(morseCode);
Serial.print(" ");
delay(abstand * 5); //Abstand zwischen den Buchstaben
}