======================================== 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 : .. math:: 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. .. code-block:: arduino // 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 : .. figure:: images/Ultrason_HC-SR04_Educaduino_LCD.png :width: 850 :height: 550 :scale: 50 % :alt: Montage ultrason - Arduino :align: center Télémètre sur Educaduino-Lab LCD .. code-block:: arduino //Application : télémètre sur écran LCD 2x16 #include // 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 }