ultra sons HC-SR04 présentation rapide du capteur

Remarqueusage

Conseil d'usage

Ce capteur peut s'utiliser avec une librairie dédiée, mais il est plus pédagogique de ne pas l'utiliser.

Dans ce cas, le capteur donne le temps pour l'aller -retour , on multipliant par la vitesse des ultrasons dans le milieu, on obtient la distance pour 'aller retour. Il suffit ensuite de diviser par deux .

Branchements

ExemplePour 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 en 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