Ils sont extrêmement faciles d'utilisation avec un Arduino, il n'y a que 4 connexions à faire:
VCC du HC-SR04 --> 5V de l'Arduino
Trig du HC-SR04 ---> digital 7 de l'Arduino
Echo du HC-SR04 ---> digital 6 de l'Arduino
GND du HC-SR04 --> Gnd de l'Arduino
Côté logiciel, rien de très compliqué non plus (aucune bibliothèque spécialisée n'est nécessaire): il s'agit de mettre la pin "Trig" à 5 volts pendant quelques microsecondes, puis la remettre à 0. Si le module reçoit un écho, la pin "Echo" devient haute (5 V) pendant une durée équivalente à l'allée retour de l'ultrasons. Il ne reste plus qu'à calculer la distance qui correspond au délai mesuré.
Voici un sketch qui montre comment afficher sur le moniteur série la distance mesurée par le module HC-SR04 (en centimètres).
Il s'agit ensuite d'orienter le capteur vers un objet pour que la distance en centimètres s'affiche sur le moniteur série.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*******************ULTRASONS HC-SR04************************* | |
* | |
* Démonstration de l'utilisation du module à ultrasons HC-SR04 | |
* avec un Arduino. La distance mesurée par le module est affichée | |
* sur le moniteur série. | |
* | |
* Connexions: | |
* | |
* Le module HC-SR04 ne comporte que 4 pins: | |
* | |
* VCC du HC-SR04 ---> 5V de l'Arduino | |
* Trig du HC-SR04 ---> digital 7 de l'Arduino | |
* Echo du HC-SR04 ---> digital 6 de l'Arduino | |
* GND du HC-SR04 ---> Gnd de l'Arduino | |
* | |
* https://electroniqueamateur.blogspot.com/2011/10/module-ultrasons-hc-sr04.html | |
* | |
**************************************************************/ | |
// définition des connexions | |
int trigPin = 7; // pin "trig" branchée dans le 7 de l'Arduino | |
int echoPin = 6; //pin "echo" branchée dans le 6 de l'Arduino | |
void setup() { | |
// prépration du moniteur série | |
Serial.begin(9600); | |
pinMode(echoPin, INPUT); | |
pinMode(trigPin, OUTPUT); | |
digitalWrite(trigPin, LOW); | |
} | |
void loop() | |
{ | |
// les variables qui nous seront utiles | |
long temps, distance; | |
// Nous envoyons un signal haut d'une durée de 10 microsecondes, en sandwich | |
// entre deux signaux bas. Des ultrasons sont émis pendant que le signal est haut | |
digitalWrite(trigPin, HIGH); | |
delayMicroseconds(10); | |
digitalWrite(trigPin, LOW); | |
// Lors de la réception de l'écho, le module HC-SR04 émet | |
// un signal logique haut (5 v) dont la durée est égale au | |
// temps écoulé entre l'émission et la réception de l'ultrason. | |
pinMode(echoPin, INPUT); | |
temps = pulseIn(echoPin, HIGH); | |
// Maintenant, nous convertissons la durée en distance | |
// puisque la vitesse du son est de 340 m/s , le temps est en microsecondes | |
// et les ultrasons parcourent le double de la distance par rapport à l'obstacle, | |
// la distance en cm sera: | |
distance = temps * 340/(2*10000); | |
// on affiche l'information sur le moniteur série: | |
Serial.print("Distance: "); | |
Serial.print(distance); | |
Serial.println(" cm"); | |
delay(500); | |
} |
À lire aussi:
Vous trouverez aussi sur ce blog des conseils pour utiliser le télémètre HC-SR04 avec un Raspberry Pi, avec un ATTiny85, avec une carte STM32 Nucleo programmée avec mbed, avec un microcontrôleur PIC et avec un micro:bit.
Yves Pelletier (Twitter: @ElectroAmateur)