
Il codice morse è stato introdotto per facilitare le comunicazioni; con una manciata di righe di Python è possibile scriverne un traduttore.
Il codice Morse, detto anche alfabeto Morse, è un sistema per trasmettere lettere, numeri e segni di punteggiatura per mezzo di un segnale in codice a intermittenza e fu uno dei primi metodi di comunicazione a distanza. Fu oggetto di studio di Samuel Morse dal 1835, ma venne realizzato dal tecnico Alfred Vail, suo collaboratore dal settembre 1837.
Il codice Morse è una forma ante litteram di comunicazione digitale. Tuttavia, a differenza dei moderni codici binari che usano solo due simboli (comunemente rappresentati con 0 e 1), il Morse ne usa quattro: punto seguito da un intervallo intersimbolo (•), linea seguita da un intervallo intersimbolo (—), intervallo corto (tra lettere) e intervallo lungo (tra parole).
Per questa ragione, oltre che per rispolverare concetti che hanno fatto la storia della comunicazione, oggi presenteremo un semplice script Python (una conquantina di righe in totale) che trasforma una stringa di caratteri nella caratteristica sequenza di punti e linee.
Il programma
|
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 |
#from machine import Pin from time import sleep #led = Pin('LED', Pin.OUT) durata_punto = 0.2 durata_linea = durata_punto * 3 intervallo = durata_punto * 7 durate = {'.' : durata_punto, '-' : durata_linea} codici = { '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' : '--..' } def send_pulse(punti_e_linee): if punti_e_linee == '.': ritardo = durata_punto else: ritardo = durata_linea #led.on() sleep(ritardo) #led.off() sleep(ritardo) def send_morse_for(caratttere): if carattere == ' ': sleep(intervallo) else: punti_e_linee = codici.get(carattere.lower()) if punti_e_linee: print(carattere + ' ' + punti_e_linee) for impulso in punti_e_linee: send_pulse(impulso) sleep(durata_linea) else: print('carattere sconosciuto: ' + carattere) while True: testo = input('Messaggio: ') for carattere in testo: send_morse_for(carattere) |
Il listato per tradurre il codice Morse in Python importa il metodo sleep() dal modulo time, e potrebbe importare il pilotaggio dei pin del GPIO (ad esempio un Raspberry Pico) per gestire l’accensione e lo spegnimento di un LED. In fase di test tale importazione, e le linea che fanno riferimento al pilotaggio del LED, sono tutte commentate.
Viene poi definita la tabella delle durate degli intervalli (una linea dura quanto tre punti, un intervallo quanto sette punti) e la tabella dei codici di traduzione.
Vengono quindi definite due funzioni: send_morse_for(carattere), che codifica il carattere, e send_pulse(punti_e_linee), che emette o scrive la codifica come output.
Il programma utilizza un ciclo infinito che legge in input la stringa da codificare ed emette in output il risultato tradotto in codice Morse.
Estensioni
E’ possibile utilizzare la tabella su Wikipedia per estendere i codici ai numeri ed ai simboli di interpunzione. (o fare riferimento al Manuale delle Giovani Marmotte, che pubblicava tale elenco).
E’ anche possibile collegare LED o buzzer al pin di trasmissione, per avere disponibile un sistema di codifica utilizzabile anche per scopi non dichiaratamente didattici.
Utilizzare il codice Morse con Python è davvero una passeggiata…
Iscriviti ai nostri gruppi Telegram
Link utili
- Arduino UNO R3
- Elegoo UNO R3
- Arduino Starter Kit per principianti
- Elegoo Advanced Starter Kit
- Arduino Nano
- Raspberry PI 5
- Raspberry PI 400
- Raspberry PI Pico
- Programmiamo il Pico