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.
Desafío
IntermedioTRIG 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);
}
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