Étiquettes : , , ,

Le capteur HC-SR04 est un capteur à ultrasons permettant de mesurer une distance par ultrason. Il utilise le même principe que le sonar, c’est à dire qu’il envoie un signal sonore et calcul le temps entre l’émission et la réception de l’écho.

Matériel

  • Ordinateur
  • Arduino UNO
  • câble USB pour connecter l’Arduino à l’ordinateur
  • Capteur de distance à ultrasons HC-SR04

Câblage

HC-SR04 arduino schematics

Code

D’après les spécifications du capteur, HC-SR04 peut mesurer une distance de 2 à 400 cm. Pour mesurer cette distance, une impulsion de 10µs doit être envoyée sur la pin Trigger et la durée de l’impulsion de sortie par la pin écho doit être mesurée (utilisez pulseIn()). Cette durée divisée par 58 doit donner la distance mesurée en centimètres.

#define trigPin 3 
#define echoPin 2

long distance;
long duration; 

void setup() { 
  Serial.begin(9600); 
  pinMode(trigPin, OUTPUT); 
  pinMode(echoPin, INPUT); 
  } 
  
  void loop() { 
    distance=readUltrasonicSensor();
    if (distance >= 400 || distance <= 0){ 
      Serial.println("Unknown value"); } 
    else { 
      Serial.print(distance); 
      Serial.println(" cm"); 
      } 
      delay(500);// delay in milliseconds 
 } 

long readUltrasonicSensor(){ 
  // Send 10µs pulse 
  digitalWrite(trigPin, HIGH); 
  delayMicroseconds(10); 
  digitalWrite(trigPin, LOW); 
  // Read pulse duration 
  duration = pulseIn(echoPin, HIGH); 
  Serial.println(duration); //Convert and return value 
  return duration/ 58; 
}

N.B. Selon l’endroit où vous avez acheté le capteur et sa version, les paramètres de mesures (portée, conversion) peuvent différer. Vérifiez la datasheet de votre capteur.

Bibliothèque

Pour simplifier le code, vous pouvez créer ou télécharger et installer la librairie SR04.h (by mrRobot62). Le code peut alors être simplifié comme suivant:

#include "SR04.h"
#define TRIG_PIN 3
#define ECHO_PIN 2
#define LOOPDELAY 1000

SR04 hcsr04 = SR04(ECHO_PIN,TRIG_PIN);
long distance;

void setup() {
   Serial.begin(9600);
   delay(LOOPDELAY);
}

void loop() {
   distance=hcsr04.Distance();
   Serial.print(distance);
   Serial.println("cm");
   delay(LOOPDELAY);
}

Application

Détection et évitement d’obstacle pour un robot mobile

Sources

datasheet HC-SR04

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie