from machine import Pin
from time import sleep, ticks_us, ticks_diff
# Pin configuration
trigger = Pin(15, Pin.OUT)
echo = Pin(14, Pin.IN)
green_led1 = Pin(16, Pin.OUT)
green_led2 = Pin(17, Pin.OUT)
yellow_led1 = Pin(18, Pin.OUT)
yellow_led2 = Pin(19, Pin.OUT)
red_led1 = Pin(20, Pin.OUT)
red_led2 = Pin(21, Pin.OUT)
red_led3 = Pin(22, Pin.OUT)
def measure_distance():
trigger.low()
sleep(0.000002) # 2 microseconds
trigger.high()
sleep(0.00001) # 10 microseconds
trigger.low()
while echo.value() == 0:
signal_off = ticks_us()
while echo.value() == 1:
signal_on = ticks_us()
time_passed = ticks_diff(signal_on, signal_off)
distance = (time_passed * 0.0343) / 2 # Convert to cm
return distance
# Function to control LEDs based on distance
def indicate_distance(distance):
# Turn off all LEDs first
red_led1.off()
red_led2.off()
red_led3.off()
yellow_led1.off()
yellow_led2.off()
green_led1.off()
green_led2.off()
# Control LEDs based on distance
if distance < 3:
red_led3.on()
red_led2.on()
red_led1.on()
elif distance < 7:
red_led2.on()
red_led1.on()
elif distance < 13:
red_led1.on()
elif distance < 20:
yellow_led2.on()
yellow_led1.on()
elif distance < 25:
yellow_led1.on()
elif 25 < distance <= 27:
green_led2.on()
green_led1.on()
else:
green_led1.on()
try:
while True:
distance = measure_distance()
print("Distance:", distance, "cm")
indicate_distance(distance)
sleep(1)
finally:
red_led1.off()
red_led2.off()
red_led3.off()
yellow_led1.off()
yellow_led2.off()
green_led1.off()
green_led2.off()