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
BOOTSELLED1239USBRaspberryPiPico©2020RP2-8020/21P64M15.00TTT
Wokwi - Online ESP32, STM32, Arduino Simulator