import machine
import utime
# Configuración de pines para semáforo de vehículos
s1V = machine.Pin(2, machine.Pin.OUT)
s1A = machine.Pin(1, machine.Pin.OUT)
s1R = machine.Pin(0, machine.Pin.OUT)
s2V = machine.Pin(5, machine.Pin.OUT)
s2A = machine.Pin(4, machine.Pin.OUT)
s2R = machine.Pin(3, machine.Pin.OUT)
s3V = machine.Pin(26, machine.Pin.OUT)
s3A = machine.Pin(27, machine.Pin.OUT)
s3R = machine.Pin(28, machine.Pin.OUT)
s4V = machine.Pin(20, machine.Pin.OUT)
s4A = machine.Pin(21, machine.Pin.OUT)
s4R = machine.Pin(22, machine.Pin.OUT)
# Configuración de pines para indicadores peatonales
p1R = machine.Pin(6, machine.Pin.OUT) # LED rojo peatonal 1
p1G = machine.Pin(7, machine.Pin.OUT) # LED verde peatonal 1
p2R = machine.Pin(8, machine.Pin.OUT) # LED rojo peatonal 2
p2G = machine.Pin(9, machine.Pin.OUT) # LED verde peatonal 2
# Configuración de botones para paso peatonal
button1 = machine.Pin(10, machine.Pin.IN, machine.Pin.PULL_DOWN)
button2 = machine.Pin(11, machine.Pin.IN, machine.Pin.PULL_DOWN)
# Inicializar LEDs peatonales (rojos encendidos, verdes apagados)
p1R.value(1)
p2R.value(1)
p1G.value(0)
p2G.value(0)
# Funciones para el semáforo de vehículos
def verde(v_on, v1_off, v2_off, v3_off):
v_on.value(1)
v1_off.value(0)
v2_off.value(0)
v3_off.value(0)
s1A.value(0)
s2A.value(0)
s3A.value(0)
s4A.value(0)
def rojo(r_off, r1_on, r2_on, r3_on):
r_off.value(0)
r1_on.value(1)
r2_on.value(1)
r3_on.value(1)
def parpadeo(v_on):
v_on.value(0)
utime.sleep_ms(500)
v_on.value(1)
utime.sleep_ms(500)
v_on.value(0)
utime.sleep_ms(500)
v_on.value(1)
utime.sleep_ms(500)
def amarillo(a_on):
a_on.value(1)
s1V.value(0)
s2V.value(0)
s3V.value(0)
s4V.value(0)
# Ciclo principal de control del semáforo y peatonal
while True:
# Verificar si algún botón fue presionado para activar los LEDs verdes peatonales
if button1.value() == 1 or button2.value() == 1:
print("Botón presionado, activando cruce peatonal")
# LEDs rojos peatonales se apagan y los verdes se encienden
p1R.value(0)
p2R.value(0)
p1G.value(1)
p2G.value(1)
# Mantener LEDs verdes encendidos durante el tiempo de cruce
utime.sleep(5) # Tiempo de cruce peatonal
# Apagar LEDs verdes y volver a encender LEDs rojos
p1G.value(0)
p2G.value(0)
p1R.value(1)
p2R.value(1)
# Secuencia del semáforo de vehículos
verde(s1V, s2V, s3V, s4V)
rojo(s1R, s2R, s3R, s4R)
utime.sleep(3)
parpadeo(s1V)
amarillo(s1A)
utime.sleep(2)
verde(s2V, s1V, s3V, s4V)
rojo(s2R, s1R, s3R, s4R)
utime.sleep(3)
parpadeo(s2V)
amarillo(s2A)
utime.sleep(2)
verde(s3V, s1V, s2V, s4V)
rojo(s3R, s1R, s2R, s4R)
utime.sleep(3)
parpadeo(s3V)
amarillo(s3A)
utime.sleep(2)
verde(s4V, s1V, s2V, s3V)
rojo(s4R, s1R, s2R, s3R)
utime.sleep(3)
parpadeo(s4V)
amarillo(s4A)
utime.sleep(2)