import machine
import utime
from machine import Pin
#declariones de los pines
pin_led_verde= 19
pin_led_amarillo= 18
pin_led_rojo= 5
pin_boton= 17
pin_led_verde_peaton= 23
pin_led_rojo_peaton= 22
#configuracion de los pines
led_verde= machine.Pin(pin_led_verde, machine.Pin.OUT)
led_rojo= machine.Pin(pin_led_rojo, machine.Pin.OUT)
led_amarillo= machine.Pin(pin_led_amarillo, machine.Pin.OUT)
boton= machine.Pin(pin_boton, machine.Pin.IN, machine.Pin.PULL_UP)
led_verde_peaton= machine.Pin(pin_led_verde_peaton, machine.Pin.OUT)
led_rojo_peaton= machine.Pin(pin_led_rojo_peaton, machine.Pin.OUT)
led_rojo_peaton.on()
#variable boton
boton_conteo=0
tiempo_restante=0
#funcion de cuando se presiona el boton
def presionado(Pin):
global boton_conteo
boton_conteo=1
boton.irq(trigger= Pin.IRQ_FALLING, handler=presionado)
#funcion semaforo principal
def semaforo():
global boton_conteo
led_verde.on()
utime.sleep(5)
led_verde.off()
led_amarillo.on()
utime.sleep(3)
led_amarillo.off()
led_rojo.on()
evaluacion_final(40,10)
led_rojo.off()
#funcion para evaluar si se presionó el botón
def evaluacion_final(veces, extra):
global boton_conteo
if boton_conteo==1:
pase_peatonal(5)
else:
for x in range (veces):
if boton_conteo==0:
utime.sleep(.1)
else:
tiempo_restante= ((veces+extra)-x)*.1
pase_peatonal(tiempo_restante)
break
#funcion de pase peaotonal
def pase_peatonal(tiempo_restante):
global boton_conteo
led_verde_peaton.on()
led_rojo_peaton.off()
print("Pase peatonal encendido")
utime.sleep(tiempo_restante)
led_rojo_peaton.on()
led_verde_peaton.off()
boton_conteo=0
while True:
semaforo()