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:
Dah
ist dreimal so lang wie ein Dit
.Dit
lang.Dah
(oder drei Dits
) eingeschoben.Dits
.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
.
// 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); } }
sendeBuchstabe
(siehe Vorlage unten). Diese Funktion soll ein Zeichen als Argument erhalten, das Sie als Morsecode ausgibt.#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 .... ]