from machine import Pin, I2C
from lcd_api import LcdApi
from i2c_lcd import I2cLcd
import utime
trigger = Pin(19, Pin.OUT)
echo = Pin(18, Pin.IN)
def ultrasonic():
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
return timepassed
# Define the I2C interface and the LCD dimensions
I2C_ADDR = 0x27
I2C_NUM_ROWS = 2
I2C_NUM_COLS = 16
i2c = I2C(0, scl=Pin(1), sda=Pin(0), freq=200000)
print(f"I2C Address : {hex(i2c.scan()[0]).upper()}")
print(f"I2C Configuration: {i2c}")
lcd = I2cLcd(i2c, I2C_ADDR, I2C_NUM_ROWS, I2C_NUM_COLS)
while True:
measured_time = ultrasonic()
distance_cm = (measured_time * 0.0343) / 2
distance_cm = round(distance_cm, 2)
lcd.clear()
lcd.putstr(f"Distance:\n{distance_cm}cm")
utime.sleep(1)
print("The distance from object is", distance_cm, "cm")
utime.sleep(1)