from machine import Pin, I2C
import time
from lcd_api import LcdApi
from i2c_lcd import I2cLcd
from machine import Pin, Timer
import time
# --- I2C LCD Setup ---
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
lcd_addr = i2c.scan()[0]
lcd = I2cLcd(i2c, lcd_addr, 2, 16)
LED = Pin(15,Pin.OUT)
# --- Ultrasonic Sensor Pins ---
TRIG = Pin(3, Pin.OUT)
ECHO = Pin(2, Pin.IN)
# Function to measure distance
def measure_distance():
TRIG.low()
time.sleep_us(2)
TRIG.high()
time.sleep_us(10)
TRIG.low()
while ECHO.value() == 0:
signaloff = time.ticks_us()
while ECHO.value() == 1:
signalon = time.ticks_us()
duration = time.ticks_diff(signalon, signaloff)
distance_cm = (duration * 0.00343) / 2
return distance_cm
# --- Main Loop ---
lcd.putstr("Distance:")
while True:
try:
distance = measure_distance()
lcd.move_to(0, 1)
lcd.putstr("Dist: {:5.2f} cm".format(distance))
if distance > 15:
LED.value(1)
else:
LED.value(0)
except:
lcd.move_to(0, 1)
lcd.putstr("Sensor Error ")
time.sleep(1)