from machine import Pin, I2C
from i2c_lcd import I2cLcd
import utime
sda = Pin(0)
scl = Pin(1)
i2c = I2C(0, sda = sda, scl = scl, freq=400000)
devices = i2c.scan()
lcd_addr = devices[0]
lcd = I2cLcd(i2c, lcd_addr, 2, 16)
trigger = Pin(14, Pin.OUT)
echo = Pin(15, Pin.IN)
def update_distance(distance):
lcd.clear()
lcd.putstr(f"Distance: {distance:.2f} m")
def update_acceleration(acceleration):
lcd.clear()
lcd.putstr(f"Acceleration: {acceleration:.2f} m/s²")
def measure_distance():
trigger.low()
utime.sleep_us(2)
trigger.high()
utime.sleep_us(5)
trigger.low()
while echo.value() == 0:
signaloff = utime.ticks_us()
while echo.value() == 1:
signalon = utime.ticks_us()
timepassed = signalon - signaloff
distance = (timepassed * 0.0343) / 2
update_distance(distance)
return distance
distances = []
for i in range(5):
distance = measure_distance()
distances.append(distance)
update_distance(distance/100)
utime.sleep(2)
initial_distance = distances[0]/100
final_distance = distances[4]/100
time_interval =8
acceleration = (2*(final_distance - initial_distance)) / (time_interval**2)
update_acceleration(acceleration)