Morse-Code-Sender mit Arduino bauen – Einfache DIY-Anleitung
Komponenten und Materialien
| Arduino UNO | × | 1 |
| Taster 12 mm (2-polig) | × | 2 |
| LED (beliebig) | × | 1 |
| Summer | × | 1 |
| Widerstand 330 Ω | × | 4 |
| Steckbrett | × | 1 |
| Jumper-Kabel | × | 10 |
Apps und Online-Dienste
- Arduino IDE
Über dieses Projekt
Ideenbeschreibung
Wir kommunizieren alle über unsere natürlichen Sinne (Sprache, Gestik…). Der spannende Teil beginnt, wenn man geheime Informationen übermitteln möchte. Wie macht man das? Die Antwort liegt in der Art der Informationsübertragung, sodass ein Dritter die Nachricht nicht versteht, es sei denn, er kennt den Schlüssel. Dafür habe ich Morse-Code-Kommunikation verwendet – man könnte auch andere Methoden nutzen.
Was ist Morse-Code?
Morse-Code ist eine Kommunikationsmethode, bei der Buchstaben durch Kombinationen von Punkten (.) und Strichen (-) dargestellt werden, z. B. A → .- , B → -…
Weitere Informationen: Morse Code History

Warum Morse-Code?
Der Grund ist simpel: Ich sah einen Film, in dem ein Agent durch Drücken eines Knopfes Informationen übermittelte und am Empfangsende andere sie decodierten. Ich dachte, das könnte man mit Arduino und einfachen Bauteilen nachbauen.
Wie funktioniert das Projekt?
Nach dem Aufbau der Schaltung auf dem Steckbrett und dem Hochladen des Sketches öffnen Sie den Serial Monitor. Sie sehen eine Anleitung:

Folgen Sie den Anweisungen, und Sie können loslegen. Bei Fragen schauen Sie sich das Demonstrationsvideo an.
Code
Morse-Code Quellcode (C/C++)
Öffnen Sie die Arduino IDE, gehen Sie zu Datei → Öffnen → MorseCode.ino und klicken Sie auf Hochladen.
/* Morse Code Demonstration ~ by Jalal Mansoori */
#define SIZE 26
const int ledPin = 8;
const int speakerPin = 12;
const int dotButton = 2;
const int dashButton = 7;
String morseCode = "";
String text = "";
int characterAscii = 0;
int startPos = 0, endPos = 0;
int startPos1 = 0, endPos1 = 0;
String characterCode = "";
int dashButtonState = 0;
int dotButtonState = 0;
String letters[SIZE] = {
".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..",
".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.",
"...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."
};
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(dotButton, INPUT);
pinMode(dashButton, INPUT);
Serial.begin(9600);
Serial.println("*************************************************************");
Serial.println(" Demonstration of Morse Code ");
Serial.println("*************************************************************");
Serial.println("\nInstructions");
Serial.println("1. First Write Your Morse code");
Serial.println("2. When done, write 1 and press Enter/Send");
Serial.println("3. For space between letters write 2 and press Enter");
Serial.println("4. For space between words write 3 and press Enter");
Serial.println("5. Translation will be shown");
Serial.println("\n\nEnter Your Morse Code Here ");
}
void loop() {
while (Serial.available() > 0) {
int ascii = Serial.read();
switch (ascii) {
case 49: // '1'
Serial.print("\n");
morseCode.concat('#');
Serial.print("\nYour Morse code Translation: ");
endPos1 = morseCode.indexOf('#');
while (endPos1 < morseCode.length()) {
extractLetters(morseCode.substring(startPos1, endPos1));
startPos1 = endPos1 + 1;
if (startPos1 == morseCode.length()) break;
endPos1 = morseCode.indexOf('#', startPos1);
}
startPos1 = 0; endPos1 = 0; text = ""; morseCode = "";
Serial.println("\n\nEnter Your Morse Code Here ");
break;
case 50: // '2'
morseCode.concat("@"); Serial.print("@"); delay(200); break;
case 51: // '3'
morseCode.concat("#"); Serial.print("#"); delay(200); break;
}
}
process();
}
void turnONLedSpeaker() {
digitalWrite(ledPin, HIGH);
tone(speakerPin, 4699, 300);
}
void process() {
dotButtonState = digitalRead(dotButton);
dashButtonState = digitalRead(dashButton);
if (dashButtonState == HIGH) {
turnONLedSpeaker();
morseCode.concat("-"); Serial.print("-"); delay(200);
} else if (dotButtonState == HIGH) {
turnONLedSpeaker();
morseCode.concat("."); Serial.print("."); delay(200);
} else {
digitalWrite(ledPin, LOW);
}
}
char convertIntoText(String characterCode) {
characterAscii = 65; // 'A'
for (int i = 0; i < SIZE; i++) {
if (characterCode == letters[i]) return characterAscii;
characterAscii++;
}
return '?';
}
void extractLetters(String words) {
words.concat('@');
endPos = words.indexOf('@');
while (endPos < words.length()) {
characterCode = words.substring(startPos, endPos);
text.concat(convertIntoText(characterCode));
startPos = endPos + 1;
characterCode = "";
if (startPos == words.length()) break;
endPos = words.indexOf('@', startPos);
}
Serial.print(text); Serial.print(" ");
startPos = 0; endPos = 0; text = "";
}
Schaltpläne
Anleitung für digitale Pins vom Arduino zum Steckbrett:
→ Pin D2 an ein Bein von Taster 1.
→ Pin D7 an ein Bein von Taster 2.
→ Pin D8 an Anode der LED über Widerstand.
→ Pin D12 an Pluspol des Summers über Widerstand.
Alle weiteren Verbindungen entnehmen Sie dem Schaltbild.
Herstellungsprozess
- LED-Helligkeit per PWM und Taster am Arduino Mega steuern
- DTMF-Decoder mit Arduino bauen – ganz ohne zusätzlichen IC
- Ultraschall-Schwebegerät mit Arduino bauen – Akustische Levitation Schritt für Schritt
- Morsecode-Kommunikation mit Lasermodul – Duales Arduino-Projekt
- Smart IoT-Glas bauen: Füllstand überwachen mit ESP8266, Arduino & Ultraschall
- Arduino Iron Man bauen: Komponenten, Sensoren & Schritt-für-Schritt-Anleitung
- Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth
- Erdmassen-Messung mit Arduino: Schritt-für-Schritt DIY-Anleitung
- DIY Arduino Luftbefeuchter-Steuerung mit Relais – Sichere Hochspannungs-Installation
- Echtzeit-Entfernungsmessung mit Arduino Sonar & Processing-Visualisierung