
Vidéo
Schéma du circuit

Code source
1int echoPin = 6;
2int trigPin = 7;
3int maxDistance = 100;
4int minDistance = 3;
5
6void setup() {
7 pinMode(trigPin, OUTPUT);
8 pinMode(echoPin, INPUT);
9 Serial.begin(9600);
10}
11
12void loop() {
13 digitalWrite(trigPin, HIGH);
14 delayMicroseconds(10);
15 digitalWrite(trigPin, LOW);
16
17 unsigned long duration = pulseIn(echoPin, HIGH);
18 double totalPath = (double)duration * 0.034;
19 int distance = totalPath / 2;
20
21 if (distance > minDistance && distance < maxDistance) {
22 Serial.print("Distance: ");
23 Serial.print(distance);
24 Serial.println("cm");
25 }
26
27 delay(500);
28}FAQ
Comment le HC-SR04 mesure-t-il la distance ?▾
Le capteur émet une onde sonore de 40 kHz et mesure le temps de retour de l'écho. Le son se propage dans l'air à une vitesse d'environ 343 m/s ; la distance est convertie en centimètres à l'aide de la formule : distance = temps × 0,0343 / 2 (la division par 2 correspond à l'aller-retour).
Quelles sont la distance minimale et la distance maximale qu'il peut mesurer ?▾
En pratique, il mesure des distances comprises entre environ 2 cm et 400 cm. À des distances inférieures à 2 cm, ainsi qu'à des distances très éloignées ou sur des surfaces absorbant le son (tissu, mousse), les mesures peuvent être erronées ou indiquer 0.
Parfois, on obtient des valeurs égales à 0 ou très élevées. Pourquoi ?▾
Si l'écho ne revient pas, la fonction pulseIn expire. Assure-toi que le capteur est orienté vers une surface plane et dure, attends au moins 60 ms entre chaque mesure et filtre les lectures erronées dans le code.
Puis-je l'utiliser avec l'ESP32 ?▾
Le HC-SR04 fonctionne à 5 V et la broche ECHO fournit une tension de sortie de 5 V. Comme l'ESP32 fonctionne en logique 3,3 V, tu dois installer un diviseur de tension (par exemple 1 kΩ + 2 kΩ) sur la ligne ECHO ou utiliser le modèle HC-SR04P compatible 3,3 V.
