// Mesure la durée de retour de l'écho US sur un obstacle avec le module US HC-SR04 // Déclaration des constantes const byte Broche_echo = 7; // Broche Echo du HC-SR04 sur broche D7 de la carte UNO const byte Broche_trigger = 8; // Broche Trigger du HC-SR04 sur broche D8 de la carte UNO // Déclaration des variables unsigned int t; // durée A/R de la salve US en µs : entier positif limité à 2*32768 (codage sur 16bits) soit environ 65000µs void setup() { // Initialisation des ports Serial.begin(9600); // établissement d'une liaison de communication série avec l'ordinateur pinMode(Broche_trigger,OUTPUT); // broche Trigger de la carte UNO en sortie (émettra l'impulsion US) pinMode(Broche_echo,INPUT); // broche Echo de la carte UNO en entrée (recevra le signal retour) // La sortie Echo du HC-SR04 est par défaut à 0V (LOW) // Impulsion électrique de 10 μs sur la broche trigger (émetteur US) qui produit un train de 8 impulsions US de 40kHz digitalWrite(Broche_trigger,LOW); // (re)met la sortie Trigger à 0V delay(10); // il est important d'attendre au moins 10ms (sinon mauvais fonctionnement) digitalWrite(Broche_trigger,HIGH); // met la sortie Trigger à 5V delayMicroseconds(10); // pendant 10 µs digitalWrite(Broche_trigger,LOW); // // Mesure de la durée de propagation A/R du train d'impulsions US : la sortie Echo du module US émet en asynchrone // une impulsion haute dont la durée est égale à la durée de propagation A/R du train US (donnée constructeur). t = pulseIn(Broche_echo,HIGH);// mesure une durée (unsigned long en μs) d'état haut Serial.print("t = "); // affiche via le port série Serial.print(t); // affiche la valeur de t Serial.println(" μs"); // affiche l'unité et passe à la ligne } void loop() { }