17. Sensor ultrasónico¶
VÍDEO: Dos maneras de programar el sensor de distancia
Los sensores de distancia HC-SR04 utilizan ondas ultrasónicas para determinar la distancia entre el sensor y un objeto. El sensor mide con una precisión aceptable entre 2 cm y 400 cm.
Figura 17.1Sensor de distancia ultrasónico HC-SR04.¶
Las patillas TRIG (trigguer o disparador) y ECHO (eco) pueden ir a cualquier pin digital de Arduino, configurando el TRIG como salida digital y ECHO como entrada.
El montaje básico sería:
Programación del sensor¶
Hay dos posibles formas de programar el sensor. Sin biblioteca o con biblioteca.
Sin biblioteca, con más líneas de código, quedaría así:
1const int TRIG = 9; // Definimos un pin digital para TRIG
2const int ECHO = 8; // Definimos un pin digital para ECHO
3long tiempo, distancia; // Variables de tipo long por ser cantidades
4 // grandes en microsegundos
5
6void setup() {
7 pinMode(TRIG, OUTPUT); // El pin TRIG es de salida
8 pinMode(ECHO, INPUT); // El pin ECHO de entrada
9 Serial.begin(9600);
10}
11
12void loop() {
13 //Emitimos un pulso de 10µs
14 digitalWrite(TRIG, LOW); // Nos aseguramos de que el trigger está desactivado
15 delayMicroseconds(2); // Esperamos 2µs
16 digitalWrite(TRIG, HIGH); // Mandamos un pulso de 10µs al TRIG
17 delayMicroseconds(10);
18 digitalWrite(TRIG, LOW);
19
20 tiempo = pulseIn(ECHO, HIGH); // Mide en µs el tiempo en detectar el eco
21 distancia = tiempo * 0.017; // Convertimos µs -> cm
22
23 Serial.print(distancia); // Mostramos la distancia en el monitor serial
24 Serial.println(" cm");
25
26 delay(1000); // Tiempo entre mediciones
27}
Con biblioteca, con menos líneas de código, quedaría así:
1#include <Ultrasonic.h> // Librería Ultrasonic de Erick Simões
2
3Ultrasonic sensorDistancia(9, 8); // Pines de TRIG y de ECHO
4int distancia;
5
6void setup() {
7 Serial.begin(9600);
8}
9
10void loop() {
11 distancia = sensorDistancia.read(); // Lee la distancia en cm
12
13 Serial.print(distancia);
14 Serial.println(" cm");
15
16 delay(1000); // Tiempo entre mediciones
17}