Jump to content

Arduino. Medir distancias con HC-SR04 + sonido


chujalt
 Share

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • 5 months later...

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.

Link to comment
Share on other sites

Saludos erremartin...

 

Muy bueno tu prototipo.

 

En cuanto a la precisión, según el fabricante, mide distancias entre 2 centímetros a 4 metros, con una precisión de 3 milímetros.

Para cosas de andar por casa no está mal.

 

Saludos

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...