from machine import Pin, time_pulse_us, I2C
import time
from lcd_api import LcdApi
from pico_i2c_lcd import I2cLcd

# Define LCD I2C pins/BUS/address
SDA = 2
SCL = 3
I2C_BUS = 1
LCD_ADDR = 0x27

msg=0
# Define LCD rows/columns
LCD_NUM_ROWS = 2
LCD_NUM_COLS = 16

# Set up LCD I2C
lcdi2c = I2C(I2C_BUS, sda=machine.Pin(SDA), scl=machine.Pin(SCL), freq=400000)
lcd = I2cLcd(lcdi2c, LCD_ADDR, LCD_NUM_ROWS, LCD_NUM_COLS)

def lcdPrint(msg):
    lcd.putstr(str(msg))
    
SOUND_SPEED=340
TRIG_PULSE_DURATION=10

trig_pin=Pin(1, Pin.OUT)
echo_pin=Pin(0,Pin.IN)

while True:
    trig_pin.value(0)
    time.sleep_us(5)
    trig_pin.value(1)
    time.sleep_us(TRIG_PULSE_DURATION)
    trig_pin.value(0)
    
    ultransonic_duration=time_pulse_us(echo_pin,1,30000)
    distance_cm=SOUND_SPEED*ultransonic_duration/20000
    
    print(f"Distance: {distance_cm} cm")
    msg=(f"{distance_cm} cm")
    lcdPrint(msg)
    time.sleep_ms(500)
    lcd.clear()
    
    
    