from machine import Pin, Timer
import time
def blink(timer):
global led, led_state
led.value(led_state)
led_state = not led_state
def measure_distance():
trig.value(1)
time.sleep_us(10)
trig.value(0)
timeout = time.ticks_add(time.ticks_us(), 30000)
while echo.value() == 0 and time.ticks_diff(time.ticks_us(), timeout) < 0:
start = time.ticks_us()
while echo.value() == 1:
end = time.ticks_us()
pulse_duration = time.ticks_diff(end, start)
distance = (pulse_duration * 0.0343) / 2
return distance
trig = Pin(18, Pin.OUT)
echo = Pin(19, Pin.IN)
led = Pin(0, Pin.OUT)
led_state = False
trig.value(0)
time.sleep(2)
blink_timer = Timer(-1)
while True:
distance = measure_distance()
if 0 < distance <= 200:
period = int(distance * 9.5)
blink_timer.init(period=period, mode=Timer.PERIODIC, callback=blink)
else:
blink_timer.deinit()
led.value(0)
time.sleep(2)