Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Select Page
Sensor ultrasónico
HC-SR04 y Arduino
by Admin | May 16, 2014 | Tutoriales Arduino
| 56 comments
Conceptos Básicos.
Primeramente debemos armar el circuito de
prueba para el sensor, el cual consiste
únicamente en proveer alimentación al
módulo y asignarle 2 pines de interfaz con el
Arduino (echo y trigger). Este tipo de módulos
para medición de distancia por
ultrasonidos se divide en 2 grandes grupos:
Interfaz mediante pulso de eco e interfaz
serial (I2C o UART). El HC-SR04 cae dentro
del primer grupo, por lo que explicaremos su
funcionamiento brevemente en las siguientes
lineas.
Materiales Necesarios.
Tarjeta Arduino UNO R3
Módulo sensor ultrasónico HC-SR04
Cables tipo dupont para conexiones
Protoboard (opcional)
http://playground.arduino.cc/Code/NewPin
g
Arduino
1 #include <NewPing.h>
2
3 /*Aqui se configuran los pines donde debemo
4 #define TRIGGER_PIN 12
5 #define ECHO_PIN 11
6 #define MAX_DISTANCE 200
7
8 /*Crear el objeto de la clase NewPing*/
9 NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DI
10
11 void setup() {
12 Serial.begin(9600);
13 }
14
15 void loop() {
16 // Esperar 1 segundo entre mediciones
17 delay(1000);
18 // Obtener medicion de tiempo de viaje de
19 int uS = sonar.ping_median();
20 // Imprimir la distancia medida a la cons
21 Serial.print("Distancia: ");
22 // Calcular la distancia con base en una
23 Serial.print(uS / US_ROUNDTRIP_CM);
24 Serial.println("cm");
25 }
1 /**
2 GeekFactory - "Construye tu propia tecno
3 Distribucion de materiales para el desar
4 www.geekfactory.mx
5
6 EJEMPLO SENSOR ULTRASONICO 1
7
8 REALIZA LA MEDICION DE DISTANCIA CON UN
9 AL ARDUINO. ESTE EJEMPLO NO UTILIZA LIBR
10 SE UTILIZA LA FUNCION "PULSEIN" PARA MED
11
12 */
13 // DECLARACION DE VARIABLES PARA PINES
14 const int pinecho = 8;
15 const int pintrigger = 9;
16 const int pinled = 13;
17
18 // VARIABLES PARA CALCULOS
19 unsigned int tiempo, distancia;
20
21 void setup() {
22 // PREPARAR LA COMUNICACION SERIAL
23 Serial.begin(9600);
24 // CONFIGURAR PINES DE ENTRADA Y SALIDA
25 pinMode(pinecho, INPUT);
26 pinMode(pintrigger, OUTPUT);
27 pinMode(13, OUTPUT);
28 }
29
30 void loop() {
31 // ENVIAR PULSO DE DISPARO EN EL PIN "TRI
32 digitalWrite(pintrigger, LOW);
33 delayMicroseconds(2);
34 digitalWrite(pintrigger, HIGH);
35 // EL PULSO DURA AL MENOS 10 uS EN ESTADO
36 delayMicroseconds(10);
37 digitalWrite(pintrigger, LOW);
38
39 // MEDIR EL TIEMPO EN ESTADO ALTO DEL PIN
40 tiempo = pulseIn(ECHO, HIGH);
41
42 // LA VELOCIDAD DEL SONIDO ES DE 340 M/S
43 // DIVIDIMOS EL TIEMPO DEL PULSO ENTRE 58
44 distancia = tiempo / 58;
45
46 // ENVIAR EL RESULTADO AL MONITOR SERIAL
47 Serial.print(distancia);
48 Serial.println(" cm");
49 delay(200);
50
51 // ENCENDER EL LED CUANDO SE CUMPLA CON C
52 if (distancia <= 15) {
53 digitalWrite(13, HIGH);
54 delay(500);
55 } else {
56 digitalWrite(13, LOW);
57 }
58 }
Conclusión
Como hemos visto a lo largo de este artículo,
utilizar el sensor HC-SR04 y arduino es
bastante sencillo. Con el uso de una librería
se facilita en gran medida el desarrollo de
aplicaciones. Sin embargo, podemos
desarrollar también nuestro propio código
que optimice el uso del tiempo del CPU,
utilizando incluso interrupciones y eventos. Si
eres de esas personas curiosas que siempre
quieren saber como funcionan las cosas, en
otra ocasión desarrollamos un programa
para microcontroladores PIC en lenguaje C
que puedes revisar para ver como funciona el
algoritmo de comunicación con este tipo de
sensores.
56 Comments
Maite on 10 mayo, 2018 at 13:00
Hola buenas tardes, se puede
programar ese mismo para contar
cuantas interrupciones tiene cada 10
segundos. El límite de interrupciones
es de 10.
Reply
Reply
Reply
lo conecto al arduino en el de %v y se
apaga el la placa
Reply
Reply
me marca o cm
que hago?
Reply
Reply
Reply
¿Puedes ayudarme?.
Reply
Reply
Reply
Reply
Reply
Reply
SI
Reply
Reply
Reply
Reply
Hola.
Reply
Reply
Hola.
Saludos.
Reply
Mario montaño on 10
septiembre, 2017 at 9:07
Reply
mario montano on 10
septiembre, 2017 at 9:10
Reply
Reply
Reply
Reply
Reply
Reply
NewPing sonar1(8, 9
MAX_DISTANCE);
NewPing sonar2(10, 11,
MAX_DISTANCE);
sonar1.ping_median();
sonar2.ping_median();