-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmorseinterpreter.py
108 lines (88 loc) · 2.19 KB
/
morseinterpreter.py
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
import machine
import time
# Código morse
MORSE = {"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": "--..",
"0": "-----",
"1": ".----",
"2": "..---",
"3": "...--",
"4": "....-",
"5": ".....",
"6": "-....",
"7": "--...",
"8": "---..",
"9": "----.",
".": ".-.-.-",
",": "-.-.--",
"?": "..--..",
'"': ".-..-.",
"!": "--..--",
" ": " "}
def pinLed(pin):
return machine.Pin(pin, machine.Pin.OUT)
def flash(pin, sec):
pin.value(False)
time.sleep(sec)
pin.value(True)
time.sleep(sec)
return
def send(pin,
message="Bienvenido!",
short=0.5):
"""
message: mensaje a interpretar (por defecto: Hola mundo!")
pinLed: pin en el que se encuentra el led que iluminar
(por defecto: 16)
short: representa la duración de la pulsación corta
(por defecto: 0.5 segundos)
"""
print(message)
# Apaga el led en caso de que esté encendido
if pin.value == False:
pin.value(True)
# Tiempo que el LED está encendido según el tipo de pulsación
# (corta, larga o espacio)
long = short * 3
space = short * 2
for letter in message:
code = MORSE.get(letter.upper())
for e in code:
print("{} >> {}".format(letter, e))
if e == ".":
flash(pin, short)
if e == "-":
flash(pin, long)
if e == " ":
flash(pin, space)
try:
send(pin=pinLed(16))
except KeyboardInterrupt:
print("Se ha interrumpido el programa")
else:
print("Programa finalizado")