from machine import Pin, I2C
import utime
from lcd_api import LcdApi
from pico_i2c_lcd import I2cLcd
# Pines del sensor ultrasónico
TRIG_PIN = 16
ECHO_PIN = 17
# Configuración del LCD I2C
I2C_ADDR = 0x27
I2C_NUM_ROWS = 2
I2C_NUM_COLS = 16
# Inicialización de los pines
trig = Pin(TRIG_PIN, Pin.OUT)
echo = Pin(ECHO_PIN, Pin.IN)
# Inicialización del I2C y LCD
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
lcd = I2cLcd(i2c, I2C_ADDR, I2C_NUM_ROWS, I2C_NUM_COLS)
def measure_distance():
# Enviar pulso de disparo
trig.low()
utime.sleep_us(2)
trig.high()
utime.sleep_us(10)
trig.low()
# Medir la duración del pulso de eco
while echo.value() == 0:
signaloff = utime.ticks_us()
while echo.value() == 1:
signalon = utime.ticks_us()
# Calcular la distancia
timepassed = signalon - signaloff
distance = (timepassed * 0.0343) / 2
return distance
def main():
lcd.putstr("Range Finder")
utime.sleep(2)
lcd.clear()
while True:
distance = measure_distance()
lcd.move_to(0, 0)
lcd.putstr("Distance: {:6.2f} cm".format(distance))
print("Distance: {:.2f} cm".format(distance))
utime.sleep(1)
if __name__ == "__main__":
main()