Etiquetas: , , ,

El HC-SR04 es un sensor ultrasónico que mide la distancia con ondas de ultrasonido. Utiliza el mismo principio que un sonar que envía una onda de sonido y mide el tiempo entre la transmisión y la recepción de su eco.

Material

  • Computadora
  • Arduino UNO
  • Cable USB para conectar Arduino a la computadora
  • Sensor ultrasónico de distancia HC-SR04

Diagrama de conexión

HC-SR04 arduino schematics

Código

Según las especificationes del sensor, el HC-SR04 tiene un rango de 2 a 400 cm. Para medir una distancia, debe enviarse un pulso de 10 µs al pin de disparo (al menos cada 60 ms) y la duración del pulso de salida debe medirse desde el pin de eco. Esta duración dividida por 58 debería dar el valor en centímetros. Una función útil para medir la duración de un pulso es la función pulseIn().

#define trigPin 3 
#define echoPin 2

long distance;

void setup() { 
  
#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. : Dependiendo de dónde haya comprado su sensor y su versión, el rango y el valor de conversión pueden diferir un poco. Verifique las especificaciones de su sensor.

Biblioteca

Para simplificar el código, puede crear o descargar la biblioteca SR04.h (by mrRobot62). El código se puede volver a escribir de la siguiente manera:

#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);
}

Solicitud

  • Detección y evitación de obstáculos para robot móvil

Fuente

Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código