from machine import Pin
import time
start = False
stop = False
def handle_interrupt_start(pin):
global start
start = True
global interrupt_pin_start
interrupt_pin_start = pin
def handle_interrupt_stop(pin):
global stop
stop = True
global interrupt_pin_stop
interrupt_pin_stop = pin
button_start = Pin(10, Pin.IN, Pin.PULL_UP)
button_stop = Pin(14, Pin.IN, Pin.PULL_UP)
led_red_1 = Pin(23,Pin.OUT)
led_yellow_1 = Pin(19,Pin.OUT)
led_green_1 = Pin(2,Pin.OUT)
def reset_semaforo():
led_green_1.off()
led_red_1.off()
led_yellow_1.off()
def sleep_and_check(useconds):
global stop
count = 0
while count < useconds:
time.sleep(0.001)
if stop:
reset_semaforo()
stop = False
start = False
return False
count = count + 1
return True
def semaforo_1():
led_green_1.on()
led_red_1.off()
next_ = sleep_and_check(8000)
if next_:
led_yellow_1.on()
led_green_1.off()
next_ = sleep_and_check(2000)
if next_:
led_red_1.on()
led_yellow_1.off()
sleep_and_check(8000)
button_start.irq(trigger=Pin.IRQ_RISING, handler=handle_interrupt_start)
button_stop.irq(trigger=Pin.IRQ_RISING, handler=handle_interrupt_stop)
while True:
if start:
next_ = sleep_and_check(1000)
if next_:
semaforo_1()