El HC-SR04 es un sensor de distancias por ultrasonidos capaz de detectar objetos y calcular la distancia a la que se encuentra en un rango de 2 a 450 cm. El sensor funciona por ultrasonidos y contiene toda la electrónica encargada de hacer la medición. Su uso es tan sencillo como enviar el pulso de arranque y medir la anchura del pulso de retorno.

PING 4-6V - HC-SR04 5V - SRF05 5V - SRF06 9-24V
Pines de conexión:
- VCC
- Trig (Disparo del ultrasonido)
- Echo (Recepción del ultrasonido)
- GND


Práctica
Controlar proximidad para distancias menores y mayores de 10cm, con indicadores rojo y verde respectivamente.
Materiales
- 1 Arduino UNO Rev3
- 1 Sendor ultrasónico HC-SR04
- 2 LED (rojo y verde)
- 2 Resistencias 220 Ohm
- 8 Cables de conexión
- 1 Protoboard
Montaje

Sketch
Opción 1: Calculando la distancia
#define pinTrig 7
#define pinEcho 8
#define ledRojo 11
#define ledVerde 12
int duracion, distancia;
void setup() {
Serial.begin (9600);
pinMode(pinTrig, OUTPUT);
pinMode(pinEcho, INPUT);
pinMode(ledRojo, OUTPUT);
pinMode(ledVerde, OUTPUT);
}
void loop() {
digitalWrite(pinTrig, LOW);
delayMicroseconds(2);
digitalWrite(pinTrig, HIGH);
delayMicroseconds(10);
digitalWrite(pinTrig, LOW);
duracion = pulseIn(pinEcho, HIGH);
distancia = (duracion/2) / 29;
if (distancia <= 10){
digitalWrite(ledRojo, HIGH);
digitalWrite(ledVerde,LOW);
Serial.print(distancia);
Serial.println("cm");
Serial.println("Alarma.......");
}
else {
digitalWrite(ledRojo, LOW);
digitalWrite(ledVerde, HIGH);
Serial.print(distancia);
Serial.println("cm");
}
delay(400);
}
Opción 2: Utilizando la librería Ultrasonic.h
[Descargar libreria Ultrasonic]
#include
// Se define los pines como constantes
#define pinTrig 7
#define pinEcho 8
#define ledRojo 11
#define ledVerde 12
int distancia;
// Declaración variable ultrasonido
Ultrasonic ultrasonido(pinTrig,pinEcho);
void setup() {
Serial.begin (9600);
pinMode(pinTrig, OUTPUT);
pinMode(pinEcho, INPUT);
pinMode(ledRojo, OUTPUT);
pinMode(ledVerde, OUTPUT);
}
void loop() {
distancia = ultrasonido.Ranging(CM);
// CM centímetros or INC pulgadas
if (distancia < 10){
digitalWrite(ledRojo,HIGH);
digitalWrite(ledVerde,LOW);
Serial.print("Led rojo - Distancia: ");
Serial.print(distancia);
Serial.println(" cm");
} else {
digitalWrite(ledVerde,HIGH);
digitalWrite(ledRojo,LOW);
Serial.print("Led verde- Distancia: ");
Serial.print(distancia);
Serial.println(" cm");
}
delay(400);
}