# modulos
from machine import Pin, I2C,time_pulse_us #medir la pulsacion en ms
from time import sleep, sleep_us #retraso en ms
from pico_i2c_lcd import I2cLcd
i2c=I2C(0,sda=Pin(0), scl=Pin(1), freq=400000) #creamos i2c
I2C_ADDR=i2c.scan()[0]
ECHO_PIN=26 #pin de echo
TRIGGER_PIN=27 #pin del trigger
#crear objeto tipo lcd, trigger y echo
lcd=I2cLcd(i2c,I2C_ADDR,2,16)
trigger=Pin(TRIGGER_PIN,Pin.OUT) #tipo salida, trigger envia la pulsacion
echo=Pin(ECHO_PIN,Pin.IN) #echo recibe la pulsacion
#se crea funcion
def medir_distancia():
trigger.low() #antes de enviar pulso el trigger debe estar apagado
sleep_us(2) #indicar que despues de 2 microsegundos, se active
trigger.high() #despues de 2 ms, envie la pulsación
sleep_us(10) #esperamos 10 ms
trigger.low() #despues se apagará
#duracion
#distancia = velocidad x tiempo
#cuanto demora en regresar el pulso a echo
pulso_duracion=time_pulse_us(echo,Pin.high) #tiempo de pulso en ms y pin del echo encendido
#para calcular la distancia, creamos la variable distancia
distancia=pulso_duracion*0.034/2 #velocidad del sonido, formula para convertir en cm la duracion
return round(distancia) #valor redondeado, si queremos un valor exacto quitamos round
#LOOP
while True:
#obtener el valor e imprimir en pantalla
distancia_lcd=medir_distancia() #llamamos funcion con el resultado para mostrar
print("Distancia: {:0.1f} cm".format(distancia_lcd)) #distancia con un decimal y con format indicamos lo que se almacenara
lcd.clear() #se limpia pantalla para asegurar que no hay nada
lcd.putstr(str(distancia_lcd)+ "cm") #imprmimos en pantala
sleep(2) #se actualzara cada 2 seg