Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Aporte Arduino, medir distancias con HC-SR04 + sonido
#1
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.



[Imagen: hcsr04.jpg]


[Imagen: 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.


.
Responder



Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)