# inica display en 0, cada vuelta a direccion + del encoder te va mostrando un numero
# del 1 al 9 sin pasar del 9, encoder en direccion negativa te da numero del -1 al -9
from machine import Pin
from time import sleep
value = 0
pul = 0
rev = 10
def num(mos):
display = int(mos) if mos >= 0 else int(mos * -1)
x = lista[display]
a.value(int(x[0]))
b.value(int(x[1]))
c.value(int(x[2]))
d.value(int(x[3]))
e.value(int(x[4]))
f.value(int(x[5]))
g.value(int(x[6]))
p.value(1 if mos < 0 else 0)
def isrA(pin):
global pul,value
if clk.value() == 0:
pul += 1
if pul >= rev:
value = min(value + 1, 9)
num(value)
pul = 0
while dt.value() == 0:
sleep(0.005)
def isrB(pin):
global pul,value
if dt.value() == 0:
pul += 1
if pul >= rev:
value = max(value - 1, -9)
num(value)
pul = 0
while clk.value() == 0:
sleep(0.005)
a = Pin(15,Pin.OUT)
b = Pin(2,Pin.OUT)
c = Pin(4,Pin.OUT)
d = Pin(5,Pin.OUT)
e = Pin(18,Pin.OUT)
f = Pin(19,Pin.OUT)
g = Pin(21,Pin.OUT)
p = Pin(23,Pin.OUT)
dt = Pin(12,Pin.IN,Pin.PULL_UP)
dt.irq(trigger=Pin.IRQ_FALLING,handler=isrA)
clk = Pin(14,Pin.IN,Pin.PULL_UP)
clk.irq(trigger=Pin.IRQ_FALLING,handler=isrB)
lista=["1111110","0110000","1101101","1111001","0110011","1011011","1011111","1110000","1111111","1111011"]
num(value)
while (1):
sleep(1)