Application : réalisation d’un télémètre
Connaissant la célérité du son, la distance par rapport à un obstacle est calculée par le microcontrôleur à l’aide de la relation suivante :
\[d = \dfrac{c \times \Delta t}{2}\]
Il suffit d’ajouter le calcul de la distance juste après la mesure de la durée.
// Mesure de la durée d'une distance
#define pinTrig 8 // Trig sur broche 8
#define pinEcho 9 // Echo sur broche 9
long dureeEcho; // Durée de l'Echo
float distance; // Distance en module et réflecteur
float vitesse = 345 ; // Vitesse obtenue
void setup() {
pinMode(pinTrig,OUTPUT); // Broche Trig en sortie
digitalWrite(pinEcho,LOW); // Sortie Trig à l état bas
pinMode(pinEcho,INPUT); // Broche Echo en entrée
Serial.begin(9600); // Paramétrage du port série
}
void loop() {
digitalWrite(pinTrig,HIGH); // Début impulsion de declenchement
delayMicroseconds(10); // Attendre 10 microseconde
digitalWrite(pinTrig,LOW); // Fin impulsion (Etat bas)
dureeEcho = pulseIn(pinEcho,HIGH); // Mesure de la durée de l'impulsion sur Echo
distance = (vitesse*dureeEcho*1E-6)/2; // Calcul de la distance
Serial.print("Duree (us) = "); // Affichage sur port série
Serial.println(dureeEcho); //
Serial.print("Distance (m) = "); // Affichage sur port série
Serial.println(distance); //
delay(1000); // Attendre 1s
}
En autonome avec un écran LCD :

Télémètre sur Educaduino-Lab LCD
//Application : télémètre sur écran LCD 2x16
#include <LiquidCrystal.h> // Importation de la librairie LiquidCrystal
#define pinTrig 8 // Trig sur broche 8
#define pinEcho 9 // Echo sur broche 9
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Brochage de l'afficheur
float distance; // Distance en module et réflecteur
long dureeEcho; // Durée mesurée
float vitesse = 345 ; // Vitesse obtenue
void setup() {
pinMode(pinTrig,OUTPUT); // Broche Trig en sortie
digitalWrite(pinEcho,LOW); // Sortie Trig à l état bas
pinMode(pinEcho,INPUT); // Broche Echo en entrée
lcd.begin(16, 2); // fixe le nombre de colonnes et de lignes de l afficheur
}
void loop() {
digitalWrite(pinTrig,HIGH); // Début impulsion de déclenchement
delayMicroseconds(10); // Attendre 10 microseconde
digitalWrite(pinTrig,LOW); // Fin impulsion (Etat bas)
dureeEcho = pulseIn(pinEcho,HIGH); // Mesure de la durée de l'impulsion sur Echo
distance = (vitesse*dureeEcho*1E-6)/2; // Calcul de la distance
lcd.setCursor(0,0); // place le curseur au début de la ligne 0
lcd.print("Distance en m"); // Affiche la légende
lcd.setCursor(0,1); // place le curseur au début de la ligne 1
lcd.print(distance); // Affiche la valeur de la distance
delay(1000); // Attendre 1s
}