// Télémètre d'après le blog d'Eskimon
int vitesse = 340 ; // vitesse du son 340 m/s
int Trig = 3; // Déclencheur sur la broche 3
int Echo = 2; // Réception sur la broche 2
/* Pour l'écran LCD */
#include <Wire.h> // inclure la bibliothèque permettant la communication par le protocole I2C
#include "rgb_lcd.h" // inclure la bibliothèque pour l'écran LCD
rgb_lcd lcd; // création d'un objet lcd
void setup() {
pinMode(Trig, OUTPUT); // initialisation de la broche "Trig" comme étant une sortie
pinMode(Echo, INPUT); // initialisation de la broche "Echo" comme étant une entrée
digitalWrite(Trig, LOW); // Mettre "Trig" niveau bas
lcd.begin(16, 2); // configurer le nombre de colonnes et de lignes de l'écran LCD
}
void loop()
{
digitalWrite(Trig, HIGH); // Un état haut de 10 microsecondes est mis sur la broche "Trig"
delayMicroseconds(10); // on attend 10 µs
digitalWrite(Trig, LOW); // On remet à l’état bas la broche Trig
unsigned long duree = pulseIn(Echo, HIGH); // Lecture de la durée d’état haut sur la broche "Echo"
lcd.clear(); // effacer l'écran
if (duree > 30000) // si la durée est supérieure à 30ms, l'onde est perdue
{
lcd.setCursor(0, 0); // mettre le curseur à la première colonne, première ligne
lcd.print("Onde perdue !");
}
else
{
// On calcule la distance
duree = duree / 2; // On divise cette durée par deux pour n'avoir qu'un trajet
float temps = duree / 1000000.0; //on met en secondes
float distance = vitesse * temps; //on multiplie par la vitesse, d=v*t
// On affiche la distance
lcd.setCursor(0, 0); // mettre le curseur à la première colonne, première ligne
lcd.print("D = ");
lcd.print(distance);
lcd.print(" m");
}
// petite pause
delay(250);
}