from machine import Pin
import utime
# Hardware Setup
trigger = Pin(20, Pin.OUT)
echo = Pin(21, Pin.IN)
# LED Bar Graph setup (Pins 2 to 11 control the 10 segments)
bar_pins = [Pin(i, Pin.OUT) for i in range(2, 12)]
def get_distance_m():
trigger.low()
utime.sleep_us(2)
trigger.high()
utime.sleep_us(10)
trigger.low()
while echo.value() == 0:
start = utime.ticks_us()
while echo.value() == 1:
end = utime.ticks_us()
pulse_time = utime.ticks_diff(end, start)
distance_m = (pulse_time * 0.0343) / 2 / 100
return distance_m
while True:
dist = get_distance_m()
# Mathematical Threshold Scaling
if dist > 1.0:
level = 0
elif dist <= 0.1:
level = 10
else:
# Distance mapping: 1.0m to 0.1m scales to 0-10 LEDs
level = int((1.0 - dist) * 11.1)
# Write to Bar Graph
for i in range(10):
if i < level:
bar_pins[i].value(1)
else:
bar_pins[i].value(0)
utime.sleep(0.1)