Le module HC-SR04 est un capteur ultrasonique utilisé pour mesurer des distances. Voici ses spécification techniques :
Son principe de fonctionnement est assez simple:
Chaque 1/2 seconde, on effectue une mesure de distance et on affiche le résultat sur le moniteur série
#define trigPin 7
#define echoPin 6
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
digitalWrite(trigPin, LOW);
Serial.begin(9600);
}
void loop() {
delay(500);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
float Tus = pulseIn(echoPin, HIGH); // temps en µs
float Dcm = Tus * 0.0344 / 2; // distance en cm
Serial.print(Dcm,1);
Serial.print(" Cm ");
}
On va par exemple compter les voitures à l'entrée d'un parking
La largeur du passage fait que les voiture passent à proximité du capteur (disons D = 1m à 2m).
On mesure continuellement la distance, si inférieur à D => présence obstacle
#define trigPin 12
#define echoPin 11
#define TRIG_D 100 // Intervalle de détection en cm
#define TRIG_T TRIG_D*2/0.0344 // temps de vol correspondant (µs)
#define LED 13
#include <LCD_I2C.h>
LCD_I2C lcd(0x27, 16, 2);
int CTR = 0, newState, oldState;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);
digitalWrite(trigPin, LOW);
lcd.begin();
lcd.backlight();
lcd.print(CTR);
oldState = isObstacle();
}
void loop() {
newState = isObstacle();
digitalWrite(LED, newState);
if (newState - oldState == 1) {
CTR++;
lcd.clear();
lcd.print(CTR);
}
oldState = newState;
delay(100);
}
int isObstacle() {
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
float Tus = pulseIn(echoPin, HIGH);
if (Tus < TRIG_T) return 1;
else return 0;
}