from machine import Pin, reset
from time import sleep
print("\x1b[2J\x1b[H", end="")
class LED:
def __init__(self, pin):
self.value = Pin(pin, Pin.OUT).value
self.state = False
self.value(0)
def toggle(self):
if self.state:
self.value(0)
self.state = False
else:
self.value(1)
self.state = True
morse = {
"a": [0.5, 1],
"b": [1, 0.5, 0.5, 0.5],
"c": [1, 0.5, 1, 0.5],
"d": [1, 0.5, 0.5],
"e": [0.5],
"f": [0.5, 0.5, 1, 0.5],
"g": [1, 1, 0.5],
"h": [0.5, 0.5, 0.5, 0.5],
"i": [0.5, 0.5],
"j": [0.5, 1, 1, 1],
"k": [1, 0.5, 1],
"l": [0.5, 1, 0.5, 0.5],
"m": [1, 1],
"n": [1, 0.5],
"o": [1, 1, 1],
"p": [0.5, 1, 1, 0.5],
"q": [1, 1, 0.5, 1],
"r": [0.5, 1, 0.5],
"s": [0.5, 0.5, 0.5],
"t": [1],
"u": [0.5, 0.5, 1],
"v": [0.5, 0.5, 0.5, 1],
"w": [0.5, 1, 1],
"x": [1, 0.5, 0.5, 1],
"y": [1, 0.5, 1, 1],
"z": [1, 1, 0.5, 0.5],
}
def norm_and_lower(text):
replacements = {
'á':'a','à':'a','ã':'a','â':'a','ä':'a',
'é':'e','è':'e','ê':'e','ë':'e',
'í':'i','ì':'i','î':'i','ï':'i',
'ó':'o','ò':'o','õ':'o','ô':'o','ö':'o',
'ú':'u','ù':'u','û':'u','ü':'u',
'ç':'c',
'Á':'A','À':'A','Ã':'A','Â':'A','Ä':'A',
'É':'E','È':'E','Ê':'E','Ë':'E',
'Í':'I','Ì':'I','Î':'I','Ï':'I',
'Ó':'O','Ò':'O','Õ':'O','Ô':'O','Ö':'O',
'Ú':'U','Ù':'U','Û':'U','Ü':'U',
'Ç':'C'
}
norm = ''.join(replacements.get(c, c) for c in text)
return norm.lower()
def strip_in_time(led, time):
led.value(1)
sleep(time)
led.value(0)
sleep(time)
def off_in_time(led, time):
led.value(0)
sleep(time)
def morse_strip(led, text, velocity=None):
for letter in norm_and_lower(text):
if letter == " ":
if velocity is None:
off_in_time(led, time)
else:
n_time = time
if velocity > 0:
n_time -= (abs(time) * (velocity / 100))
else:
n_time += abs(time) * (velocity / 100)
off_in_time(led, n_time)
else:
morse_l = morse[letter]
for time in morse_l:
if velocity is None:
strip_in_time(led, time)
else:
n_time = time
if velocity > 0:
n_time -= (abs(time) * (velocity / 100))
else:
n_time += abs(time) * (velocity / 100)
strip_in_time(led, n_time)
led = None
try:
led = LED(int(input("Qual a porra do pino? : ")))
except:
print("Seu burro. Não pode colocar letra e nem passar do tamanho da quantidade de pinos da mcu infeliz.")
sleep(10)
print("\x1b[2J\x1b[H", end="")
reset()
while True:
text = input("Me fale a porra pra eu piscar em codigo morse: ")
if text == ".exit":
reset()
elif text == ".cls":
print("\x1b[2J\x1b[H", end="")
else:
morse_strip(led, text, 90)