ultra sons HC-SR04 présentation rapide du capteur
Remarque : usage
Conseil d'usage
Ce capteur peut s'utiliser avec une librairie dédiée, mais il est plus pédagogique de ne pas utiliser cette librairie.
Dans ce cas, le capteur donne le temps pour l'aller -retour , en multipliant par la vitesse des ultrasons dans le milieu, on obtient la distance pour 'aller retour. Il suffit ensuite de diviser par deux .
Branchements
Exemple : Pour une arduino uno
Pas de bornes réservées pour ce capteur
GND, la masse
Le TRIG : déclenchement du signal
L' ECHO : Retour du signal
VCC : L'alimentation , certains modèles (notés HC-SR04+ et HC-SR04P) supportent 3.3 donc sont utilisables avec un node mmcu ESP8266
1
2
//on définit les constantes utiles
3
const int USTrig = 7; // Déclencheur sur la broche 7
4
const int USEcho = 8; // Réception sur la broche 8
5
const int VITESSE = 331;
6
7
//on dprepare les variables utilisees plus tard
8
float temps; //Nombre décimal dans lequel on stockera la durée
9
float distance ; // Nombre décimal que l'on utilisera pour calculer la distance de l'obstacle
10
11
12
//fonction d'initialisation, executee une seule fois
13
void setup()
14
{
15
//borne en sortie pour l'envoi du message
16
pinMode(USTrig, OUTPUT);
17
//borne en entree pour la reception
18
pinMode(USEcho, INPUT);
19
//en n'evoie pas de signal
20
digitalWrite(USTrig, LOW);
21
//on ouvre le port serie pour communiquer
22
Serial.begin(9600);
23
}
24
25
// The loop function is called in an endless loop
26
void loop()
27
{
28
29
// 1. Un état haut de 20 microsecondes est mis sur la broche "Trig"
30
digitalWrite(USTrig, HIGH);
31
delayMicroseconds(20); //on attend 20 µs
32
// 2. On remet à l'état bas la broche Trig
33
digitalWrite(USTrig, LOW);
34
35
// 3. On lit la durée d'état haut sur la broche "Echo"
36
unsigned long duree = pulseIn(USEcho, HIGH);
37
38
if(duree > 30000)
39
{
40
// si la durée est supérieure à 30ms, l'onde est perdue
41
Serial.println("Onde perdue, mesure échouée !");
42
}
43
else
44
{
45
46
47
48
49
distance = VITESSE*duree/2/1000;
50
Serial.print("Duree = ");
51
Serial.println(duree); //affiche le temps de vol d'un trajet en secondes
52
Serial.print("Distance = ");
53
Serial.println(distance); //affiche la distance mesurée (en mètres)
54
}
55
56
// petite pause
57
delay(2000);
58
}
59
60