from machine import Pin, SoftI2C
from utime import sleep_us, ticks_us, sleep
from i2c_lcd import I2cLcd

red_pin = Pin(23, Pin.OUT)
yellow_pin = Pin(22, Pin.OUT)
green_pin = Pin(19, Pin.OUT)

triger=Pin(25,Pin.OUT)
echo=Pin(33,Pin.IN)
def ultra():
    triger.off()
    sleep_us(2)
    triger.on()
    sleep_us(5)
    triger.off()
    while echo.value()==0:
        signal_off=ticks_us()
    while echo.value()==1:
        signal_on=ticks_us()
    try:
        time_pass=signal_off - signal_on
    except NameError:
        return 0
    return time_pass/58

i2c = SoftI2C(sda=Pin(21), scl=Pin(22))
lcd = I2cLcd(i2c, 0x27, 2, 16)

while True:
    dist = ultra()
    print(f'Distance: {dist:.1f}cm')
    sleep(1)
    lcd.putstr(f'Distance:{dist:.1f}cm')
    if dist <= 50:
        red_pin.on()
        green_pin.off()
        yellow_pin.off()
    elif dist <= 100:
        red_pin.off()
        green_pin.on()
        yellow_pin.off()
    elif dist <= 200:
        red_pin.off()
        green_pin.off()
        yellow_pin.on()