ultrason-hcsr04.ino
Le capteur ultrasonique HC-SR04 donne la distance par temps de vol : l'impulsion TRIG de 10 µs déclenche une rafale de 40 kHz, pulseIn mesure l'écho, et la division par 58 convertit les microsecondes en centimètres. Un classique pédagogique de l'Arduino Nano.
Matériel requis
Un Arduino Nano classique (ATmega328P à 16 MHz, brochage DIL 30 broches sur breadboard, USB mini-B, logique 5 V, broche RESET en bas à gauche). Arduino Nano, HC-SR04 (VCC 5 V, TRIG, ECHO, GND). Le ECHO sort du 5 V : acceptable en entrée 5 V tolérante du 328P.
Câblage
TRIG→D12, ECHO→D13, VCC→5 V, GND→GND. Ne pas alimenter sous 3,3 V : le module est prévu pour 5 V.
Fonctionnement
pulseIn(ECHO, HIGH, 30000) chronomètre l'impulsion avec un timeout évitant le blocage si rien ne revient. La vitesse du son (340 m/s) divisée par l'aller-retour donne le facteur 58 µs/cm.
Exécution
Dans l'IDE Arduino, sélectionnez la carte Arduino Nano et le processeur ATmega328P, choisissez le port série puis téléversez. L'alimentation 5 V de la carte convient aux capteurs 5 V ; sinon utiliser le 3,3 V des broches adaptées.
Variantes
Moyennez 5 mesures pour stabiliser l'affichage, ou pilotez un servo pour un radar 180° (la base des projets "radar" Processing).
ultrason-hcsr04.ino
// Distance cm avec HC-SR04 sur l'Arduino Nano (broches 12/13).
const int TRIG = 12;
const int ECHO = 13;
void setup() {
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
Serial.begin(9600);
}
void loop() {
// L'impulsion de declenchement doit durer 10 microsecondes
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
// pulseIn attend l'aller-retour de l'echo (timeout 30 ms = 5 m)
long duree = pulseIn(ECHO, HIGH, 30000);
if (duree == 0) {
Serial.println(F("hors portee"));
} else {
// 340 m/s / 2 (aller-retour) = 58 us par cm
float distance = duree / 58.0;
Serial.print("distance : ");
Serial.print(distance, 1);
Serial.println(" cm");
}
delay(100); // laisser retomber l'echo precedent
}