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 :

Montage ultrason - Arduino

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
}