from machine import Pin
import time
from pico_i2c_lcd import I2cLcd #lib LCD
from machine import Ic2
# Définition des broches
trigger = Pin(0, Pin.OUT)
echo = Pin(1, Pin.IN)
led_no_obstacle = Pin(3, Pin.OUT) # LED allumée s'il n'y a pas d'obstacle
led_obstacle = Pin(4, Pin.OUT) # LED allumée si obstacle < 4 cm
print("Début du programme")
while True:
# Envoi d'une impulsion ultrason
trigger.value(0)
time.sleep_us(5)
trigger.value(1)
time.sleep_us(10)
trigger.value(0)
# Mesure du temps d'écho
echoTime = machine.time_pulse_us(echo, 1, 1000000)
# Vérification si le signal est valide
if echoTime < 0 or echoTime > 30000: # Pas de signal détecté ou hors de portée (~5m max)
print("Hors de portée")
led_no_obstacle.value(1) # Allumer LED GPIO3
led_obstacle.value(0) # Éteindre LED GPIO4
else:
# Calcul de la distance
cm = round((echoTime * 0.034005) * 0.5, 2)
print(cm, "cm")
if cm < 4:
led_no_obstacle.value(0) # Éteindre LED GPIO3
led_obstacle.value(1) # Allumer LED GPIO4
else:
led_no_obstacle.value(1) # Allumer LED GPIO3
led_obstacle.value(0) # Éteindre LED GPIO4
time.sleep(1) # Pause entre les mesures
i2c = I2C(0,scl=Pin(27), sda=Pin(26), freq=100000)#Port I2C connecré avec LCD
I2C_ADDR = i2c.scan()[0] #recherche de l'adresse du LCD
lcd = I2cLcd(i2c, I2C_ADDR, 2, 16) #initialisation du LCD (2lignes, 16 colonne)
while True:
lcd.clear() #efface le contenu du LCD
lcd.move_to(0,0) #(x,y)
lcd.putstr('DISTANCE: ' + cm ) #affiche la temp (1er ligne 1er col)
sleep(2)