SENSOR ULTRASÓNICO - ARDUINO Y USOS (HC-SR04)
- Mr T

- 7 ago 2024
- 3 Min. de lectura
¡Hola a todos! El día de hoy revisaremos el funcionamiento del sensor ultrasónico y como utilizarlo junto a nuestro Arduino.
Primero que nada, el sensor ultrasónico es un tipo de sensor, que tal como su nombre sugiere, funciona a partir del ultrasonido, El sensor envía un pulso ultrasónico a través de un emisor, la onda del pulso choca contra el objeto más cercano y regresa, siendo recibida por un receptor, y de esta manera el sensor puede calcular el tiempo que demoró el pulso en salir y regresar al sensor, lo cual permite entre muchas cosas, calcular la distancia entre el sensor y dicho objeto, por ejemplo.
SENSOR ULTRASÓNICO HC-SR04:
Uno de los sensores más comunes y populares es el HC-SR04, este se compone de 4 patitas o pines, los de los extremos entrada y salida de energía, y los de en medio los que envian y reciben los pulsos.
Sensor ultrasónico HC-SR04 y sus pines:
Cada pin cumple las siguientes funciones:
VCC: Conectado al positivo de la fuente de energía (Tensión de funcionamiento 5v)
GND: Conexión a Tierra o al negativo
TRIG: Se encarga de enviar los pulsos
ECHO: se encarga de recibir los pulsos
IMPORTANTE:
Por favor, por lo que más quieran, eviten conectar mal este dispositivo, suele ser sensible y en una conexión incorrecta puede resultar en un cortocircuito dañandolo permanentemente.
Tampoco excedan las capacidades de tensión máximos (5V DC).
Procuren asegurarse de que este correctamente polarizado (VCC con positivo y GND con negativo a 5v).
DIAGRAMA Y CONEXIONES:
Para este ejemplo, vamos a conectar de la siguiente manera:
VCC: será conectado al pin de 5v de nuestro Arduino
GND: Sera conectado al pin de tierra
TRIG: será conectado al pin D12
ECHO: será conectado al pin D11
Imagen de ejemplo:
CÓDIGO:
A continuación, voy a presentar un código para que puedan probar este sensor:
//c++
int trig = 12; //con esto definimos cual pin del arduino se conectará al trig en el sensor
int echo = 11; //con esto definimos cual pin del arduino se conectará al echo en el sensor (el que recibe la señal)
//ahora para los datos
int duracion; //variable para guardar la duracion desde que el pulso fue enviado, rebotó en una superficie y volvió al sensor
int distancia; //para guardar el valor de la distancia despues de calcular posteriormente
void setup() {
pinMode(trig, OUTPUT); //envia la señal
pinMode(echo, INPUT); //recibe la señal o pulso
Serial.begin(9600); //para que el puerto serial 9600 (definido por defecto en la configuración del monitor serial en el Arduino IDE) pueda leer las mediciones
}
void loop() {
digitalWrite(trig, LOW);
delay(5);
digitalWrite(trig, HIGH);
delay(10);
digitalWrite(trig, LOW);
//parte para calcular distancia
duracion = pulseIn(echo, HIGH); //recibir los pulsos enviados
distancia = duracion * (0.03432 / 2); //fórmula para calcular la distancia: D = V * T
//visualizar en el monitor serial
Serial.print("Dist: ");
Serial.print(distancia);
Serial.println(" cm");
delay(500); //para obtener medidas cada cierto periodo de tiempo, puedes ajustarlo a tu gusto
}
Esta resultaría ser la función básica del sensor, pero podemos utilizar para que cumpla diversas otras funciones dentro de nuestro Arduino, como el controlar componentes, para eso por ejemplo podríamos hacer una excepcion con "if" en la que si la distancia medida supera cierto número, un led se prenda:
//c++
int trig = 12;
int echo = 11;
int led = 2; //variable para el led
int duracion;
int distancia;
void setup() {
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
Serial.begin(9600);
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(trig, LOW);
delay(5);
digitalWrite(trig, HIGH);
delay(10);
digitalWrite(trig, LOW);
//parte para calcular distancia
duracion = pulseIn(echo, HIGH);
distancia = duracion * (0.03432 / 2);
//visualizar en consola
Serial.print("Dist: ");
Serial.print(distancia);
Serial.println(" cm");
//parte extra
if (distancia < 30 && distancia > 20) {
digitalWrite(led, HIGH); //el led se prenderá si la distancia es menor a 30 pero mayor a 20
} else {
digitalWrite(led, LOW); //si la distancia no corresponde, se apagará
}
delay(500);
}Imagen de este ejemplo:
Pueden ser creativos a su manera sobre como usarán ese código, sin embargo, también cuenta con sus limitaciones, en caso de que pongan acciones largas dentro de los comandos If y else, (como una canción a través de un piezoeléctrico) El Arduino esperará a que aquella acción se acabe para ir a la siguiente medición.
Pero con este código pueden hacer diferentes cosas básicas como, por ejemplo, una Alarma, un sensor de proximidad indicador con leds o mas.
VIDEO DEMOSTRATIVO:
[INSERTAR LINK]
Este fué Mr. T para POWER TO THE BUZZER, hasta la próxima, cualquier duda, no olvides preguntar.








Comentarios