import utime
from machine import Pin, I2C
from pico_i2c_lcd import I2cLcd
sda = Pin(0)
scl = Pin(1)
i2c = I2C(0, sda=sda, scl=scl, freq=40000)
devices = i2c.scan()
i2c_addr = devices[0]
lcd = I2cLcd(i2c, i2c_addr, 2, 16)
trigger = Pin(15, Pin.OUT)
echo = Pin(14, Pin.IN)
def get_distance():
trigger.value(0)
utime.sleep_us(2)
trigger.value(1)
utime.sleep_us(5)
trigger.value(0)
while echo.value() == 0:
pulse_start = utime.ticks_us()
while echo.value() == 1:
pulse_end = utime.ticks_us()
pulse_duration = utime.ticks_diff(pulse_end, pulse_start)
distance = (pulse_duration * 0.0343) / 2
return distance
distances = []
for i in range(5):
dist = get_distance()
distances.append(dist)
lcd.clear()
lcd.putstr(f"Dist: {dist:.2f} cm")
utime.sleep(2)
d1 = distances[0]
d5 = distances[4]
t = 8
acceleration = 2 * (d5 - d1) / (t ** 2)
lcd.clear()
lcd.move_to(0, 0)
lcd.putstr(f"Accel: {acceleration:.4f} m/s²")