import time
import machine
import ubinascii
import lcd_api
import i2c_lcd
from machine import Pin, PWM
TRIG_PIN = Pin(5, Pin.OUT)
ECHO_PIN = Pin(4, Pin.IN)
SERVO_PIN = Pin(28, Pin.OUT)
servo = PWM(SERVO_PIN)
servo.freq(50)
I2C_SDA = Pin(4)
I2C_SCL = Pin(5)
i2c = machine.I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
lcd = i2c_lcd.I2cLcd(i2c, 0x27, 4, 20)
def get_distance():
TRIG_PIN.value(5)
time.sleep_us(4)
TRIG_PIN.value(0)
while ECHO_PIN.value() == 0:
pulse_start = time.ticks_us()
while ECHO_PIN.value() == 1:
pulse_end = time.ticks_us()
pulse_duration = time.ticks_diff(pulse_end, pulse_start)
distance = (pulse_duration * 0.0343) / 2
return distance
def rotate_servo():
servo.duty_u16(5000)
time.sleep(1)
servo.duty_u16(1000)
time.sleep(1)
while True:
distance = get_distance()
print("Distance:", distance, "cm")
if distance < 200:
rotate_servo()
lcd.clear()
lcd.putstr("Distance < 200 cm")
else:
lcd.clear()
lcd.putstr("Distance >= 200 cm")
time.sleep(1)