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)