/* Identification des broches */ const byte SIG = 7; // Broche SIG /* Constantes pour le timeout : durée trop longe si pas d'écho */ const unsigned long T_max = 25000UL; // 25ms = ~8m à 340m/s /* Vitesse du son dans l'air en m/s (à compléter à la fin du TP) */ const float V_son = 0 ; void setup() { /* Initialise le port série */ Serial.begin(9600); } void loop() { /* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10µs sur la broche TRIGGER */ pinMode(SIG, OUTPUT); digitalWrite(SIG, LOW); delayMicroseconds(5); digitalWrite(SIG, HIGH); delayMicroseconds(10); digitalWrite(SIG, LOW); /* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) en µs */ pinMode(SIG, INPUT); long DUREE_AR = pulseIn(SIG, HIGH, T_max); /* 3. Calcul la distance en m à partir de la durée mesuré en µs et la vitesse en m/s */ float distance = V_son * DUREE_AR / 2000000 ; /* 4. Affiche le résultat de la mesure de la durée de l'écho en ms */ Serial.print(F("La durée de l'écho = ")); Serial.print(DUREE_AR/1000.0, 2); Serial.println(F(" ms. ")); /* Affiche la distance en cm (si V_son est rentré dans le programme) */ if (V_son != 0) { Serial.print(F("La distance de l'obstacle = ")); Serial.print(distance * 100.0, 2); Serial.print(F(" cm ")); Serial.print(F("avec une vitesse du son de ")); Serial.print(V_son, 1); Serial.println(F(" m/s.")); Serial.println(); } /* Délai d'attente entre 2 mesures en ms */ delay(3000); }