#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x27 for a 16 chars and 4 line display
// La broche numérique 9 est reliée à trig HC-SR04. On lui donne le nom trigPin.
int trigPin = 9;
// La broche numérique 8 est reliée à echo HC-SR04. On lui donne le nom echoPin.
int echoPin = 8;
// Déclaration variable duration qui va servir à stocker une valeur au format long.
long duration;
// Déclaration variable distance qui va servir à stocker une valeur au format float.
float distance;
void setup() {
lcd.init();
lcd.backlight();
// Définit trigPin comme sortie.
pinMode(trigPin, OUTPUT);
// Définit echoPin comme entrée.
pinMode(echoPin, INPUT);
// placer le curseur sur la colonne 5, ligne 0
lcd.setCursor(5, 0);
// Imprime un message
lcd.print("Distance :");
}
void loop() {
// Debut de la mesure avec un signal de 10 µS applique sur trigPin //
digitalWrite(trigPin, LOW); // On efface l'etat logique de trigPin
delayMicroseconds(2);
// Met la broche numérique trigPin sur ON
digitalWrite(trigPin, HIGH);
// On attend 10 millisecondes
delayMicroseconds(10);
// Met la broche numérique trigPin sur OFF
digitalWrite(trigPin, LOW);
// On lit le temps d'impulsion sur echoPin et on stock la valeur dans la variable duration
duration = pulseIn(echoPin, HIGH);
// On calcule la distance par rapport à la durée de l'impulsion
// Puis on stocke la valeur dans la variable distance
distance = duration * 0.034 / 2;
// Si distance <= 50 cm on exécute les actions entre {}
if (distance <= 50) {
// placer le curseur sur la colonne 0, ligne 1
// (note : la ligne 0 est la première ligne, puisque le comptage commence par 0):
lcd.setCursor(4, 2);
// Imprime des espaces pour effacer ancienne valeur.
lcd.print(" ");
// placer le curseur sur la colonne 0, ligne 1
lcd.setCursor(6, 2);
// Imprime la distance qui est stockée dans distance
lcd.print(distance);
// Imprime un message
lcd.print(" cm");
}
// Sinon on exécute les actions entre {}
else {
// ETC ...
lcd.setCursor(4, 2);
lcd.print("Hors portee");
}
// Attend 500 millisecondes.
delay(500);
}