from machine import Pin, I2C
from lcd1602 import LCD1602
import utime
# Define pins for ultrasonic sensor
TRIGGER_PIN = 0
ECHO_PIN = 1
# Define pins for LED and Buzzer
LED_PIN = 2
BUZZER_PIN = 3
# Initialize ultrasonic sensor pins
trigger = Pin(TRIGGER_PIN, Pin.OUT)
echo = Pin(ECHO_PIN, Pin.IN)
# Initialize LED and Buzzer pins
led = Pin(LED_PIN, Pin.OUT)
buzzer = Pin(BUZZER_PIN, Pin.OUT)
# Initialize LCD
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
lcd = LCD1602(i2c)
# Function to read ultrasonic sensor distance
def read_distance():
trigger.low()
utime.sleep_us(2)
trigger.high()
utime.sleep_us(10)
trigger.low()
while echo.value() == 0:
signaloff = utime.ticks_us()
while echo.value() == 1:
signalon = utime.ticks_us()
timepassed = signalon - signaloff
distance = (timepassed * 0.0343) / 2
return distance
# Main loop
while True:
distance = read_distance()
# Display ultrasonic sensor value on LCD
lcd.clear()
lcd.move_to(0, 0)
lcd.putstr("Distance: {:.2f} cm".format(distance))
# Check distance and control LED and Buzzer accordingly
if distance < 30:
led.off()
buzzer.on()
else:
led.on()
buzzer.off()
utime.sleep(1) # Delay between readings