from machine import Timer, Pin
import time
#reescribir todo el codigo
leds = (0, 1, 2, 3, 4, 5, 6)
lista_Pin = list()
for i in range(7):
lista_Pin.append(Pin(leds[i], Pin.OUT))
b1 = Pin(16, Pin.IN, Pin.PULL_UP)
b2 = Pin(17, Pin.IN, Pin.PULL_UP)
b3 = Pin(18, Pin.IN, Pin.PULL_UP)
b4 = Pin(19, Pin.IN, Pin.PULL_UP)
D4 = Pin(14, Pin.OUT)
D3 = Pin(15, Pin.OUT)
D2 = Pin(13, Pin.OUT)
D1 = Pin(12, Pin.OUT)
led = Pin(28,Pin.OUT)
digitos = {
# a b c d e f g
0: [1, 1, 1, 1, 1, 1, 0],
1: [0, 1, 1, 0, 0, 0, 0],
2: [1, 1, 0, 1, 1, 0, 1],
3: [1, 1, 1, 1, 0, 0, 1],
4: [0, 1, 1, 0, 0, 1, 1],
5: [1, 0, 1, 1, 0, 1, 1],
6: [1, 0, 1, 1, 1, 1, 1],
7: [1, 1, 1, 0, 0, 0, 0],
8: [1, 1, 1, 1, 1, 1, 1],
9: [1, 1, 1, 0, 0, 1, 1]
}
def salida(valor):
for pin, estado in zip(lista_Pin, digitos[valor]):
pin.value(estado)
seg = 0
mint = 0
init1 = time.ticks_ms()
init2 = time.ticks_ms()
init3 = time.ticks_ms()
tim1 = Timer()
bandera = True;
def fun_inicio(tim1):
global seg, mint, bandera
if seg <= 0:
mint -= 1
seg = 59
else:
seg -= 1
if mint == 0 and seg == 0:
bandera = True
led.off()
tim1.deinit()
def fun_b1(b1):
global seg, mint, init1, bandera
fin = time.ticks_ms()
if time.ticks_diff(fin,init1) < 250:
init1 = fin
return
if bandera:
seg += 10
if seg > 59:
mint += 1
seg = 0
if mint == 10 and seg > 0:
mint = 10
seg = 0
init1 = fin
def fun_b2(b2):
global seg, mint, init2, bandera
fin = time.ticks_ms()
if time.ticks_diff(fin,init2) < 250:
init2 = fin
return
if bandera:
seg += 1
if seg > 59:
mint += 1
seg = seg - 60
if mint == 10 and seg > 0:
mint = 10
seg = 0
init2 = fin
def fun_b3(b3):#Inicio
global seg, mint, init3, bandera
fin = time.ticks_ms()
if time.ticks_diff(fin,init3) < 250:
init3 = fin
return
bandera = False
if mint == 0 and seg == 0:
bandera = True
led.off()
tim1.init(mode=Timer.PERIODIC, period=1000, callback=fun_inicio)
def fun_b4(b4):#Pausa
global bandera
led.off()
bandera = True
tim1.deinit()
b1.irq(trigger=Pin.IRQ_FALLING, handler=fun_b1)
b2.irq(trigger=Pin.IRQ_FALLING, handler=fun_b2)
b3.irq(trigger=Pin.IRQ_FALLING, handler=fun_b3)
b4.irq(trigger=Pin.IRQ_FALLING, handler=fun_b4)
D1.value(1)
D2.value(1)
D3.value(1)
D4.value(1)
while True:
if bandera == False:
led.on()
salida(seg%10)
D1.value(0)
time.sleep_ms(5)
D1.value(1)
salida(seg//10)
D2.value(0)
time.sleep_ms(5)
D2.value(1)
salida(mint%10)
D3.value(0)
time.sleep_ms(5)
D3.value(1)
salida(mint//10)
D4.value(0)
time.sleep_ms(5)
D4.value(1)