from machine import Pin
from time import sleep
import utime
# Semáforo 1
led1R = Pin(27, Pin.OUT)
led2A = Pin(14, Pin.OUT)
led3V = Pin(12, Pin.OUT)
pir1 = Pin(34, Pin.IN, Pin.PULL_DOWN)
# Semáforo 2
led4R = Pin(21, Pin.OUT)
led5A = Pin(22, Pin.OUT)
led6V = Pin(23, Pin.OUT)
pir2 = Pin(15, Pin.IN, Pin.PULL_DOWN)
# Botones
button1 = Pin(25, Pin.IN, Pin.PULL_UP)
button2 = Pin(19, Pin.IN, Pin.PULL_UP)
# Contadores de carros
car_count1 = 0
car_count2 = 0
# Variables de tiempo
normal_green_time = 15
normal_yellow_time = 3
normal_red_time = 12
increase_green_time = 20 # Tiempo incrementado para el verde
green_time = normal_green_time
yellow_time = normal_yellow_time
red_time = normal_red_time
def set_semaforo1(rojo, amarillo, verde):
led1R.value(rojo)
led2A.value(amarillo)
led3V.value(verde)
def set_semaforo2(rojo, amarillo, verde):
led4R.value(rojo)
led5A.value(amarillo)
led6V.value(verde)
while True:
# Revisar el estado de los botones
if button1.value() == 0:
green_time = increase_green_time
print("Botón 1 presionado. Tiempo verde incrementado a 20 segundos.")
elif button2.value() == 0:
green_time = increase_green_time
print("Botón 2 presionado. Tiempo verde incrementado a 20 segundos.")
else:
green_time = normal_green_time
# Semáforo 1 en verde, Semáforo 2 en rojo
set_semaforo1(0, 0, 1)
set_semaforo2(1, 0, 0)
start_time = utime.time()
while utime.time() - start_time < green_time:
if pir1.value() == 1:
car_count1 += 1
print(f"Carros detectados en Semáforo 1: {car_count1}")
utime.sleep_ms(50)
# Semáforo 1 en amarillo, Semáforo 2 en rojo
set_semaforo1(0, 1, 0)
set_semaforo2(1, 0, 0)
sleep(yellow_time)
# Semáforo 1 en rojo, Semáforo 2 en verde
set_semaforo1(1, 0, 0)
set_semaforo2(0, 0, 1)
start_time = utime.time()
while utime.time() - start_time < green_time:
if pir2.value() == 1:
car_count2 += 1
print(f"Carros detectados en Semáforo 2: {car_count2}")
utime.sleep_ms(50)
# Semáforo 1 en rojo, Semáforo 2 en amarillo
set_semaforo1(1, 0, 0)
set_semaforo2(0, 1, 0)
sleep(yellow_time)
# Semáforo 1 en rojo
set_semaforo1(1, 0, 0)
sleep(red_time)