from machine import Pin
from time import sleep
numeros = [
[1, 1, 1, 1, 1, 1, 0], #0
[0, 1, 1, 0, 0, 0, 0], #1
[1, 1, 0, 1, 1, 0, 1], #2
[1, 1, 1, 1, 0, 0, 1], #3
[0, 1, 1, 0, 0, 1, 1], #4
[1, 0, 1, 1, 0, 1, 1], #5
[1, 0, 1, 1, 1, 1, 1], #6
[1, 1, 1, 0, 0, 0, 0], #7
[1, 1, 1, 1, 1, 1, 1], #8
[1, 1, 1, 1, 0, 1, 1], #9
[1, 1, 1, 0, 1, 1, 1], #A
[0, 0, 1, 1, 1, 1, 1], #B
[1, 0, 0, 1, 1, 1, 0], #C
[0, 1, 1, 1, 1, 0, 1], #D
[1, 0, 0, 1, 1, 1, 1], #E
[1, 0, 0, 0, 1, 1, 1], #F
[0, 0, 0, 0, 0, 0, 1], #Erro (-)
]
tecla = [
[1, 2, 3, 10],
[4, 5, 6, 11],
[7, 8, 9, 12],
[14, 0, 15, 13]
]
sete_seg = [25, 26, 27, 14, 12, 33, 32]
pin_out = [18, 5, 17, 16]
pin_in = [23, 22, 21, 19]
def liga():
for p in pin_out:
p.on()
def funcao(pin):
global num
val = scaneia()
num = val if val != 16 else num
mostra(num)
liga()
for i, p in enumerate(sete_seg):
sete_seg[i] = Pin(p, Pin.OUT)
for i, p in enumerate(pin_out):
pin_out[i] = Pin(p, Pin.OUT)
for i, p in enumerate(pin_in):
pin_in[i] = Pin(p, Pin.IN, Pin.PULL_DOWN)
pin_in[i].irq(trigger=Pin.IRQ_RISING, handler=funcao)
def scaneia():
for p in pin_out:
p.off()
for j, pout in enumerate(pin_out):
pout.on()
for i, pin in enumerate(pin_in):
if pin.value() == 1:
pout.off()
return tecla[i][j]
pout.off()
return 16
def mostra(num):
for desliga in sete_seg:
desliga.off()
if num >= 0 and num <= 16:
for i, liga in enumerate(numeros[num]):
if liga:
sete_seg[i].on()
else:
sete_seg[i].off()
num = 16
liga()
while True:
pass