Inhaltsverzeichnis

Morsen mit dem Arduino

Morsecode verwendet drei Symbole, die Punkt (' · '), Strich ('−') und Pause (  ) genannt werden, gesprochen als dit, dah (oder doh) und „Schweigen“. Die Länge eines Dit bestimmt die Geschwindigkeit, mit der gesendet werden kann, und ist die grundlegende Zeiteinheit. Dazu ein Beispiel:

   −− −−− ·−· ··· ·     /     −·−· −−− −·· ·
   M  O   R   S   E  (space)  C    O   D   E

Genauer gilt Folgendes:

Für das Beispiel „MORSE CODE“ ergibt sich dann dieses Zeitsignal (das Zeichen = bedeutet „Signal an“, das Zeichen _ bedeutet „Signal aus“):

 ===_===___===_===_===___=_===_=___=_=_=___=_______===_=_===_=___===_===_===___===_=_=___=
  ^ ^    ^               ^                     ^
 Dah|    |               Dit                   Wortabstand
    |    Buchstabenabstand
    Symbolabstand

„Gesprochen“ klingt das dann so: dahdah dahdahdah ditdahdit ditditdit dit, dahditdahdit dahdahdah dahditdit dit.

Quelle: https://de.wikipedia.org/wiki/Morsezeichen1)

Allgemeine Form eines Unterprogramms

Funktionen für "Dah" und "Dit"


(A1)

morsecode.ino
// LED-Pin
int led=FIXME;
// Laenge eines Dit in Millisekunden
int timedit=FIXME;
 
void setup() {
  // Pin in Ausgabemodus...
  pinMode(led,OUTPUT);
}
 
void loop() {
  // Lange Pause, bevors losgeht...
  digitalWrite(led,LOW);
  delay(10000);
 
  // Sendesequenz:
  sendDit();
  pause("dit");
  sendDah();
  pause("dit");
  sendDah()FIXME
  pause("zeichen"); 
  sendDah();
  pause("dit");
  sendDit();
  pause(FIXME);
}
 
// Eigene Funktionen
void sendDit() {
  digitalWrite(led,LOW);
  digitalWrite(led,HIGH);
  // ein "timedit" lang anlassen!
  delay(timedit);
  digitalWrite(led,LOW);
}
 
void sendDah() {
  digitalWrite(led,LOW);
  digitalWrite(led,HIGH);
  // drei "timedit" lang anlassen!
  delay(3*timedit);
  digitalWrite(led,LOW);
}
 
void pause(String dauer) {
  if ( dauer == "dit") {
    digitalWrite(led,LOW);
    // ein "timedit" lang anlassen!
    delay(timedit);
    digitalWrite(led,LOW);
  }
  if ( dauer == "zeichen") {
    digitalWrite(led,LOW);
    // drei "timedit" lang anlassen!
    delay(3*timedit);
    digitalWrite(led,LOW);
  }
  if ( dauer == "wort") {
    digitalWrite(led,LOW);
    // drei "timedit" lang anlassen!
    delay(7*timedit);
    digitalWrite(led,LOW);
  }
 
}

(A2)

Achtung! Zeichenketten (Strings) werden in doppelte Anführungszeichen eingeschlossen, einzelne Zeichen (Chars) werden in einfach anführungszeichen eingeschlossen!

[ .... Globale variablen, Setup und so Zeug .... ]
 
void loop() {
  [....]
 
  // Sendesequenz:
  sendBuchstabe('a'); 
  sendBuchstabe('b');
 
  [....]
}
 
// Die Buchstabenfunktion - ein Skelett
// Es wird der Buchstabe erwartet, der gesendet werden soll
// Die anderen Funktionen werden verwendet, um den Buchstaben zu senden
// Arbeit: Die Morsecodes müssen hinterlegt werden.
void sendBuchstabe(char buchstabe) {
 
  switch (buchstabe) {
    case 'a':
      //Morsecode für a
      sendDit();
      pause("dit");
      sendDah();
      break;
    case 'b':
      sendDah();
      pause("dit");
      sendDit();
      pause("dit");
      sendDit();
      pause("dit");
      sendDit();
      break;
     case [....]
     [....]
  }
  // Mindestend ein dit Pause zwischen den Zeichen
  pause("dit");
}
 
[ .... die anderen Funktionen .... ]
1)
Seite „Morsezeichen“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 19. Juni 2016, 12:51 UTC. URL: https://de.wikipedia.org/w/index.php?title=Morsezeichen&oldid=155440419 (Abgerufen: 19. Juni 2016, 16:28 UTC
2)
Die Codetabelle für Morsecode findest du hier: https://de.wikipedia.org/wiki/Morsezeichen#Standard-Codetabelle