Ir al contenido
Conéctate para seguir esto  
chujalt

Arduino. Medir distancias con HC-SR04 + sonido

Recommended Posts

Saludos....

    En esta ocasión vamos a realizar un sistema para medir distancias, le asignamos unas distancias y cuando estemos cada vez mas cerca del sistema la intermitencia del pitido será cada vez mas rápida..


Materiales utilizados

  • Una placa Arduino (yo he utilizado la Uno).
  • 6 Cables dupont.
  • Un módulo para medir distancias por ultrasonidos HC-SR04.
  • Un buzzer.

 

 

hcsr04.jpg

 

buzzer.jpg

 

 

Conexiones

  • Pin Vcc del módulo HC-SR04 al pin 5v de arduino.
  • Pin Trig del módulo HC-SR04 al pin 9 de arduino.
  • Pin Echo del módulo HC-SR04 al pin 8 de arduino.
  • Pin GND del módulo HC-SR04 al pin GND de arduino.
  • Pin positivo del buzzer al pin 10 de arduino.
  • Pin negativo del buzzer al pin GND de arduino.



Código Arduino:

long distancia;
long tiempo;
int pinSpeaker = 10;
void setup(){
 Serial.begin(9600);
 pinMode(9, OUTPUT);
 pinMode(8, INPUT);
 pinMode(pinSpeaker, OUTPUT);
}

void loop(){
 digitalWrite(9,LOW);
 delayMicroseconds(5);
 digitalWrite(9, HIGH);
 delayMicroseconds(10);
 tiempo=pulseIn(8, HIGH);
 distancia= int(0.017*tiempo);
 Serial.print("Distancia ");
 Serial.print(distancia);
 Serial.println(" cm");
 if (distancia <= 200 && distancia > 100)
 {
    playTone(500, 500);
   delay(500);    
 }
 else if (distancia <= 100 && distancia > 50)
 {
    playTone(250, 500);
   delay(250);    
 }
 else if (distancia <= 50 && distancia > 25)
 {
    playTone(200, 500);
   delay(100);    
 }
else if (distancia <= 25)
 {
    playTone(100, 500);
   delay(50);    
 }
 delay(500);
}
void playTone(long duration, int freq) {
   duration *= 1000;
   int period = (1.0 / freq) * 1000000;
   long elapsed_time = 0;
   while (elapsed_time < duration) {
       digitalWrite(pinSpeaker,HIGH);
       delayMicroseconds(period / 2);
       digitalWrite(pinSpeaker, LOW);
       delayMicroseconds(period / 2);
       elapsed_time += (period);
   }
}

Con este script lo que conseguimos es que cuando estamos entre 2 y 1 metro del sensor el buzzer empieza a pitar pausadamente.
Cuando estamos entre 1 metro y 50 cms. los pitidos serán mas cortos y rápidos que el anterior bloque de distancias.
Cuando estamos entre y 50 cms. y 25 cms. los pitidos serán mas cortos y rápidos que el anterior bloque de distancias.
Cuando la distancia sea menor de 25 cms. los pitidos serán muy cortos y rápidos.

También por el monitor serial nos imprimirá la distancia exacta a la que el objeto se encuentra del módulo.

Bueno... ya está... espero que le sirva a alguien.

Saludos.

Compartir este post


Enlace al post
Compartir en otros sitios

Si... se puede decir que si. Aunque para distancias cortas, tiene un rango de 2 cmts hasta 3 metros. El módulo funciona por ultrasonidos, emite un ultrasonido y si choca con algo y es devuelto mide la distancia dependiendo del tiempo de respuesta, y lo mejor de todo es que estos módulos son muy baratos, en ebay 2.5 € si los compras en España y 1 € si los compras de China.

 

Yo le he añadido un buzzer y lo he programado para que haga un tipo de sonido según la distancia.

 

Saludos

Compartir este post


Enlace al post
Compartir en otros sitios

Hace algún tiempo usé este módulo, pero lo asocié al módulo del láser (si, si... el láser, pero no el que quema XD, XD) y también le conecté la pantalla LCD de dos líneas. Y así conseguí saber hacia donde estaba apuntando con el sensor de ultrasonidos, y la distancia a la que estaba el punto en cuestión. No estoy seguro de la precisión de la medida, pero a fin de cuentas, Arduino es un juguete. muy entretenido, eso si.

La idea la tomé de un aparato que venden en el Leroy Merlín.

Compartir este post


Enlace al post
Compartir en otros sitios

Registra una cuenta o conéctate para comentar

Debes ser un miembro de la comunidad para dejar un comentario

Crear una cuenta

Regístrate en nuestra comunidad. ¡Es fácil!

Registrar una cuenta nueva

Iniciar Sesión

¿Ya tienes cuenta? Conéctate aquí.

Iniciar Sesión
Conéctate para seguir esto  

×