from machine import Pin, I2C
from time import sleep
from hcsr04 import HCSR04
from lcd_api import LcdApi
from i2c_lcd import I2cLcd
from machine import PWM
from servo import Servo


sensor = HCSR04(trigger_pin=14, echo_pin=27)
servo_pin = 22
servo = PWM(Pin(servo_pin), freq=50)

i2c = I2C(0, scl=Pin(23), sda=Pin(21), freq=10000)
lcd = I2cLcd(i2c, 0x27, 2, 16) 

def move_servo(angle):
    print("Moving servo to", angle, "degrees")
    duty = int((angle / 180) * 1024) 
    servo.duty(duty)

def read_and_display():
    try:
        distance = sensor.distance_cm()
        lcd.clear()
        lcd.move_to(0, 0)
        

        if distance <= 100:
            move_servo=Servo(pin=22)
            move_servo.move(180)
            lcd.putstr("{:.2f}cm".format(distance))
            lcd.putstr("         180 degree")
        else:
            move_servo=Servo(pin=22)
            move_servo.move(90)
            lcd.putstr("{:.2f}cm".format(distance))
            lcd.putstr("        90 degree")

    except Exception as e:
        print("Error:", e)

while True:
    read_and_display()
    sleep(1)