import machine
import utime
# LEDs p/ autos
led_rojo = machine.Pin(11, machine.Pin.OUT)
led_amarillo = machine.Pin(8, machine.Pin.OUT)
led_verde = machine.Pin(5, machine.Pin.OUT)
# LEDs p/ peatón
peaton_rojo = machine.Pin(10, machine.Pin.OUT)
peaton_verde = machine.Pin(9, machine.Pin.OUT)
# Botón
boton = machine.Pin(21, machine.Pin.IN, machine.Pin.PULL_UP)
#buzzer
buzzer = machine.PWM(machine.Pin(22))
while True:
# AUTOS EN ROJO / PEATÓN PUEDE CRUZAR
led_rojo.value(1)
led_amarillo.value(0)
led_verde.value(0)
peaton_rojo.value(0)
peaton_verde.value(1)
# PEATÓN CRUZA (tiempo normal)
utime.sleep(3)
# PARPADEO PEATÓN (aviso antes de rojo)
for i in range(3):
peaton_verde.value(1)
buzzer.freq(1000) #genera tono
buzzer.duty_u16(3000) #se activa
utime.sleep(0.3)
peaton_verde.value(0)
buzzer.duty_u16(0) #lo apaga
utime.sleep(0.3)
# PEATÓN YA NO CRUZA
peaton_verde.value(0)
peaton_rojo.value(1)
# AUTOS EN VERDE / PEATÓN NO PUEDE CRUZAR
tiempo_verde = 5
for i in range(tiempo_verde):
# Si presionan el botón, salir antes del verde
if boton.value() == 0:
break
led_rojo.value(0)
led_amarillo.value(0)
led_verde.value(1)
peaton_rojo.value(1)
peaton_verde.value(0)
utime.sleep(0.2)
# TRANSICIÓN
led_rojo.value(0)
led_amarillo.value(1)
led_verde.value(0)
peaton_rojo.value(1)
peaton_verde.value(0)
utime.sleep(2)