Menu
CoddyTech

Tiempo del eco ultrasónico

Parte de la sección Pantallas y sensores del Journey de Arduino de Coddy. Lección 18 de 24.

El HC-SR04 mide la distancia como un murciélago: envía un clic demasiado agudo para que podamos oírlo y mide el tiempo que tarda el eco. Cuanto más lejos esté el objeto, más tarda el eco.

Tiene dos pines de señal. Un pulso corto en HIGH en TRIG le indica que emita un clic. ECHO pasa entonces a HIGH y permanece en HIGH hasta que vuelve el eco, por lo que la duración de ese pulso HIGH es el tiempo que tardó el sonido.

delayMicroseconds() espera millonésimas de segundo, lo bastante poco para el pulso de activación de 10 microsegundos. pulseIn(pin, HIGH) espera a que el pin pase a HIGH y devuelve cuántos microsegundos permaneció en HIGH. Si no llega ningún pulso en un segundo, deja de esperar y devuelve 0.

digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);     // el pulso de disparo
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);

Un eco puede durar hasta 38000 microsegundos, más de lo que cabe en un int, así que guárdalo en un long.

challenge icon

Desafío

Intermedio

TRIG está en el pin 9 y ECHO en el pin 10. En loop():

  • envía un pulso HIGH de 10 microsegundos en TRIG
  • mide el eco con pulseIn(echoPin, HIGH)
  • imprime el tiempo con Serial.println()

Presiona Run, mueve el objeto para acercarlo y alejarlo en la placa, después Check.

Pruébalo tú mismo

const int trigPin = 9;
const int echoPin = 10;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  // envía un pulso de 10 microsegundos por TRIG
  // mide la duración del eco con pulseIn() e imprímela
  delay(200);
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Pantallas y sensores

Practica por tu cuenta: Playground de Arduino