oop/2026-04-29/morsecode/readme.md (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 |
# Morse Decoder – Einführung und Nutzung ## Einführung: Morsecode Der Morsecode ist ein Verfahren zur Übertragung von Text durch kurze und lange Signale: - Punkt (.) → kurzes Signal - Strich (-) → langes Signal Jeder Buchstabe wird durch eine Kombination dieser Signale dargestellt. Beispiele: - A → .- - B → -... - SOS → ... --- ... Die Bedeutung entsteht nicht nur durch die Signale selbst, sondern auch durch Pausen: - kurze Pause → Trennung innerhalb eines Buchstabens - mittlere Pause → neuer Buchstabe - lange Pause → neues Wort *** ## Funktionsweise des Codes Dieses Projekt implementiert einen **Morse-Decoder**, der zeitbasierte Signale interpretiert. Er funktioniert auf Basis dieses Zustandsautomaten:  ### MORSE-Dictionary Das Dictionary `MORSE` übersetzt Morsezeichen in Buchstaben: ```python '.-' → 'A' '-...' → 'B' ``` Wenn ein unbekannter Code vorkommt, wird ein `?` ausgegeben. *** ### Zeitbasierte Erkennung Der Decoder arbeitet mit einer **Zeiteinheit (`unit`)**, z. B.: ```python unit = 0.1 Sekunden ``` Damit gelten: - Punkt: < 2 × unit - Strich: ≥ 2 × unit - Buchstabenpause: ≥ 3 × unit - Wortpause: ≥ 7 × unit *** ### Klasse `MorseDecoder` #### Konstruktor ```python MorseDecoder(unit=0.1) ``` Speichert: - aktuelle Morse-Sequenz (`self.code`) - Startzeit eines Signals - Startzeit einer Pause *** #### `signal_on()` Wird aufgerufen, wenn ein Signal beginnt (Taste gedrückt): - Misst die vorherige Pause - Entscheidet: - neue Buchstaben? - neues Wort? - Gibt ggf. fertige Buchstaben zurück *** #### `signal_off()` Wird aufgerufen, wenn das Signal endet (Taste losgelassen): - Misst die Dauer des Signals - Entscheidet: - Punkt (.) - Strich (-) - Hängt das Ergebnis an `self.code` an *** #### `flush()` - Wandelt den aktuellen Morsecode in einen Buchstaben um - Nutzt das Dictionary - Gibt den Buchstaben direkt aus - Setzt den Code zurück *** ## Beispielablauf 1. Taste drücken → `signal_on()` 2. Taste loslassen → `signal_off()` 3. Pause → entscheidet über Buchstaben-/Wortgrenzen 4. Ausgabe erfolgt automatisch *** ## Arbeiten mit GitLab ### Git auschecken und konfigurieren Git clone: ```bash git clone https://git-stu.ba-glauchau.de/marvinferber/morsecode.git ``` Git Bentzer lokal konfigurieren für Identifikation im Gitlab: ```bash git config --local user.name "Max Muster" git config --local user.email "s1234567@edu.dhsn.de" ``` ### Neuen Branch erstellen ```bash git checkout -b mein-feature ``` Oder moderner: ```bash git switch -c mein-feature ``` *** ### Änderungen hinzufügen ```bash git add . git commit -m "Beschreibung der Änderung" ``` *** ### Branch zu GitLab pushen ```bash git push -u origin mein-feature ``` Danach kann im GitLab-Webinterface ein **Merge Request** erstellt werden (optional). *** ## Hinweise - Es ist darauf zu achten, dass die Zeiteinheit (`unit`) zur Eingabegeschwindigkeit passt - Für Hardware-Projekte (z. B. Raspberry Pi) kann `signal_on/off()` an GPIO-Events gebunden werden - Erweiterbar für Zahlen und Sonderzeichen *** Viel Spaß beim Experimentieren mit Morsecode |