Le module US HC-SR04 est alimenté entre les bornes Power GND et 5 V. Le déclenchement se fait par le pin Digital 2. La réception via le pin Digital 3.
Il émet des salves US à 40 kHz d’environ 1 ms, qui doivent être déclenchées par des impulsions de 10 μs, séparées par un minimum de 50 μs.
La borne echo du module renvoie une impulsion rectangulaire qui démarre à la fin de l’émission de la salve et s’arrête dès la réception d’un signal réfléchi.
Sortie série
L’affichage de la sortie série peut se faire de trois manières différentes :
En utilisant le moniteur série de l’IDE arduino, accessible par CTRL+MAJ+M
// Déclaration des variables et des constantes
float grandeur1, duree;
int trigger = 2;
int echo = 3;
void setup() {
// Mettre ici le code qui n'est exécuté qu'une fois
// Généralement l'initialisation & les paramètres
// La broche logique n°2 est une sortie
pinMode(trigger, OUTPUT);
// La broche logique n°3 est une entrée
pinMode(echo, INPUT);
// Débit de communication entre la carte et l'ordinateur
// Ne pas s'en préoccuper
Serial.begin(9600);
}
void loop() {
// Mettre ici le code principal
// qui est exécuté périodiquement
// Impulsion de déclenchement d'émission US
digitalWrite(trigger, HIGH);
// La durée de l'impulsion de déclenchement doit être supérieure à 10 μs
delayMicroseconds(20);
// L'impulsion de déclenchement doit être stoppée
// sinon le capteur ne bascule pas en écoute
digitalWrite(trigger, LOW);
// Réception de l'écho (en μs)
// pulseIn reads a pulse (either HIGH or LOW) on a pin.
// It waits for the pin to go from LOW to HIGH, starts timing, then waits for the pin to go LOW and stops timing.
// It returns the length of the pulse in microseconds
duree = pulseIn(echo, HIGH);
// Calcul
grandeur1 = duree * 343.2 * 1E-6 / 2;
// Affichage
// Décommenter pour un affichage plus riche
//Serial.print("La grandeur 1 vaut : ");
// La grandeur1 est affichée avec 3 chiffres après la virgule
Serial.println(grandeur1,3);
// Décommenter pour un affichage plus riche
//Serial.println(" unité");
// Attente (en ms) avant
// répétition du code
delay(200);
}