from machine import Pin, PWM
import time
class UltrasonicSensor:
def __init__(self, trigger_pin, echo_pin):
self.trigger = Pin(trigger_pin, Pin.OUT)
self.echo = Pin(echo_pin, Pin.IN)
def distance(self):
self.trigger.value(1)
time.sleep_us(10)
self.trigger.value(0)
timeout = time.ticks_us() + 1000000 # Timeout set to 1 second
while self.echo.value() == 0 and time.ticks_us() < timeout:
pulse_start = time.ticks_us()
timeout = time.ticks_us() + 1000000 # Reset timeout
while self.echo.value() == 1 and time.ticks_us() < timeout:
pulse_end = time.ticks_us()
pulse_duration = pulse_end - pulse_start
distance_cm = (pulse_duration * 0.0343) / 2
return distance_cm
led1 = Pin(12, Pin.OUT)
led2 = Pin(13, Pin.OUT)
led3 = Pin(14, Pin.OUT)
buzzer = PWM(Pin(23))
buzzer.freq(1047)
led_pins = [led1, led2, led3]
def activate_buzzer():
buzzer.duty(512)
time.sleep(2)
buzzer.duty(0)
sensor = UltrasonicSensor(trigger_pin=12, echo_pin=13)
try:
while True:
distance = sensor.distance()
print('distance =', distance)
if distance < 4.5:
led1.value(1)
led2.value(0)
led3.value(0)
elif 4.5 <= distance < 9:
led1.value(1)
led2.value(1)
led3.value(0)
else:
led1.value(1)
led2.value(1)
led3.value(1)
activate_buzzer()
except KeyboardInterrupt:
buzzer.deinit()
for led_pin in led_pins:
led_pin.off()