from machine import Pin, time_pulse_us
import time
# Pin configuration
trig_pin = Pin(21, Pin.OUT)
echo_pin = Pin(20, Pin.IN)
led1 = Pin(1, Pin.OUT)
led2 = Pin(2, Pin.OUT)
led3 = Pin(3, Pin.OUT)
Bp = Pin(19, Pin.OUT)
buzzer = Pin(18, Pin.OUT)
def measure_distance():
trig_pin.value(0)
time.sleep_us(2)
trig_pin.value(1)
time.sleep_us(10)
trig_pin.value(0)
duration = time_pulse_us(echo_pin, 1)
distance = (duration * 0.0343) / 2 # cm
return distance
def led_blink_cycle(distance):
delay = max(100, min(1000, int(2000 / (distance / 200)))) # 100 ms min, 1000 ms max
while True:
led1.value(1)
time.sleep_ms(delay)
led1.value(0)
led2.value(1)
time.sleep_ms(delay)
led2.value(0)
led3.value(1)
time.sleep_ms(delay)
led3.value(0)
while True:
distance = measure_distance()
if distance <= 200:
led_blink_cycle(distance)
else:
buzzer.value(1)
time.sleep(0.5)
buzzer.value(0)