import machine
import utime
SENSOR_THRESHOLD=10
# Set up GPIO pins for traffic lights
NORTH_RED_PIN = machine.Pin(2,machine.Pin.OUT)
NORTH_YELLOW_PIN = machine.Pin(3, machine.Pin.OUT)
NORTH_GREEN_PIN = machine.Pin(4, machine.Pin.OUT)
SOUTH_RED_PIN = machine.Pin(6, machine.Pin.OUT)
SOUTH_YELLOW_PIN =machine.Pin(7, machine.Pin.OUT)
SOUTH_GREEN_PIN = machine.Pin(8, machine.Pin.OUT)
EAST_RED_PIN = machine.Pin(10, machine.Pin.OUT)
EAST_YELLOW_PIN = machine.Pin(11, machine.Pin.OUT)
EAST_GREEN_PIN = machine.Pin(12, machine.Pin.OUT)
WEST_RED_PIN = machine.Pin(18, machine.Pin.OUT)
WEST_YELLOW_PIN =machine.Pin(19, machine.Pin.OUT)
WEST_GREEN_PIN = machine.Pin(20, machine.Pin.OUT)
PEDESTRIAN_GREEN_PIN = machine.Pin(26, machine.Pin.OUT)
PEDESTRIAN_RED_PIN = machine.Pin(27, machine.Pin.OUT)
PEDESTRIAN_YELLOW_PIN = machine.Pin(28, machine.Pin.OUT)
# Set up the ultrasonic sensor pins
trigger = machine.Pin(0, machine.Pin.OUT)
echo = machine.Pin(1, machine.Pin.IN)
def measure_distance():
# Trigger the ultrasonic sensor
trigger.low()
utime.sleep_us(2)
trigger.high()
utime.sleep_us(10)
trigger.low()
# Wait for the echo pulse
while echo.value() == 0:
pass
pulse_start = utime.ticks_us()
while echo.value() == 1:
pass
pulse_end = utime.ticks_us()
# Calculate the distance based on the pulse duration
pulse_duration = utime.ticks_diff(pulse_end, pulse_start)
distance = pulse_duration * 0.0343 / 2
return distance
green_time=5
distance=measure_distance()
# Check if the ultrasonic sensor is triggered during green time
if distance > SENSOR_THRESHOLD:
green_time = 5
else:
green_time = 10
while True:
PEDESTRIAN_RED_PIN.value(1)
EAST_RED_PIN.value(1)
WEST_RED_PIN.value(1)
NORTH_RED_PIN.value(0)
SOUTH_RED_PIN.value(0)
distance=measure_distance()
# Check if the ultrasonic sensor is triggered during green time
if distance > SENSOR_THRESHOLD:
green_time = 5
else:
green_time = 10
SOUTH_GREEN_PIN.value(1)
NORTH_GREEN_PIN.value(1)
utime.sleep(green_time)
SOUTH_GREEN_PIN.value(0)
NORTH_GREEN_PIN.value(0)
NORTH_YELLOW_PIN.value(1)
SOUTH_YELLOW_PIN.value(1)
utime.sleep(2)
NORTH_YELLOW_PIN.value(0)
SOUTH_YELLOW_PIN.value(0)
NORTH_RED_PIN.value(1)
SOUTH_RED_PIN.value(1)
utime.sleep(3)
PEDESTRIAN_RED_PIN.value(0)
PEDESTRIAN_GREEN_PIN.value(1)
utime.sleep(5)
PEDESTRIAN_GREEN_PIN.value(0)
PEDESTRIAN_RED_PIN.value(1)
utime.sleep(2)
EAST_RED_PIN.value(0)
WEST_RED_PIN.value(0)
distance=measure_distance()
# Check if the ultrasonic sensor is triggered during green time
if distance > SENSOR_THRESHOLD:
green_time = 5
else:
green_time = 10
WEST_GREEN_PIN.value(1)
EAST_GREEN_PIN.value(1)
utime.sleep(green_time)
WEST_GREEN_PIN.value(0)
EAST_GREEN_PIN.value(0)
EAST_YELLOW_PIN.value(1)
WEST_YELLOW_PIN.value(1)
utime.sleep(2)
EAST_YELLOW_PIN.value(0)
WEST_YELLOW_PIN.value(0)
EAST_RED_PIN.value(1)
WEST_RED_PIN.value(1)
utime.sleep(3)