[Aporte] Arduino y 2 sensorres ultrasonicos

Esto es extremadamente basico pero quizas alguno novato como yo le servira. Se usa mucho para medir distancias en los robots.

Basicamente un sensor de ultrasonido, funciona emitiendo un eco sonoro, este ultrasonido al rebotar contra una superficie vuelve. Y con esto el sensor saca, la distancia aproximada al objeto. Basicamente como lo hacen los murcielagos. Alguno quizas me corrija diciendo mas tecnicamente como funciona.

Este video de abajo es una excelente introduccion al sensor ultrasonico.


Pero el problema que tiene es que aca en Argentina no se consigue ese sensor del video se consigue el HC-SR04 (que tiene 4 patas no 3).

Asi que aca abajo dejo una prueba que hice con el codigo, la libreria, y el ejemplo para usar 2 sensores a la ves (izquierdo y derecho). Mas el clasico led que parpadea mas rapido segun que tan cerca este el objeto (para el led se coloca una resistencia de 220 a 330 (soy nuevo en la electronica). La resistencia es para no estropear el arduino y el led, cada vez que se use un led se necesitara esta resitencia de abajo.


Código:
#include 

Ultrasonic ultrader(11,10); //pin trig, pin echo
Ultrasonic ultraiz(9,8); //pin trig, pin echo 9,8
int led=5; //pin del arduino que se conecta al led
int distanciader; // variable de distancia del ultrasonico derecho
int distanciaiz; // variable de distancia del ultrasonico izquierdo
int pausa; //retardo del led en encender y apaga dependiendo del sensor

void setup(){
 pinMode(led,OUTPUT);
 Serial.begin(9600);  
}

void loop(){
distanciader = ultrader.Ranging(CM);
distanciaiz = ultraiz.Ranging(CM);
    if( distanciader < 15 || distanciaiz < 15){
      //pausa = (ultrader.Ranging(CM) * 10);
  Serial.print("derecha: ");
  Serial.print(ultrader.Ranging(CM)); // CM or INC
  Serial.print(" cm     " );
  Serial.print("izquierda: ");
  Serial.print(ultraiz.Ranging(CM)); // CM or INC
  Serial.println(" cm     " );
      pausa = 50;
      digitalWrite(led, HIGH);
      delay(pausa);
    } 
digitalWrite(led, LOW);
delay(pausa);

La libreria usada es la Ultrasonic.h que si mal no recuerdo la pueden bajar de aca.

//6d934dd0-a-62cb3a1a-s-sites.googlegroups.com/site/libreriahcsr04/libreria-hc-sr04-sensor-ultrasonico/Ultrasonic.zip?attachauth=ANoY7coMBJobqDxIpLXBgjOD Wdq6ROOwCRo7vcf1yDWi-1e7gZ242RXDoiVbreWxn6Ll_CRkBoYiMm4LZPKEQJeOWBArhui 8E8rZAA3ayTW_-zkJKxPlCxgPIrZKh_L0fzOHPF3ka5Xm0TC4Dl3PoTijXHPuJk5 3hivO7u0qslQsURhKOiyGzTJCVG_Z36E_-YEmU8GChNE3mtnn7QQEbjarrNm5L0gyzwsWqXvXj1GbtEHKCAp 3qdRraC4NB1mJa2_lh3y1b3_DnznHWpJMJRIq2l4Mvkab4g%3D %3D&attredirects=1&d=1
 

Adjuntos

  • hc-SR04.jpg
    hc-SR04.jpg
    7.2 KB · Visitas: 13
  • 8VNKsdb.jpg
    8VNKsdb.jpg
    98.3 KB · Visitas: 8
  • IEmxOHA.jpg
    IEmxOHA.jpg
    99.8 KB · Visitas: 7
  • mF1dw4t.jpg
    mF1dw4t.jpg
    94 KB · Visitas: 6
  • Nif6KPN.jpg
    Nif6KPN.jpg
    93.9 KB · Visitas: 8
  • lkXqPkQ.jpg
    lkXqPkQ.jpg
    39.6 KB · Visitas: 8
Como quedo desprolijo y quiero mostrarselo a un amigo de nuevo rehice un poco el codigo y le agrege un led por sensor (2 sensores verdes) y un led rojo para cuando esta muy cerca (una boludez bah, pero por ahi a alguien le sirve).

#include <Ultrasonic.h>

Ultrasonic ultrader(12,11); //pin trig, pin echo
Ultrasonic ultraiz(9,8); //pin trig, pin echo 9,8
int ledder=3; //pin del arduino que se conecta al led
int lediz=4; //pin del arduino que se conecta al led
int ledrojo=5; //pin del arduino que se conecta al led
int distanciader; // variable de distancia del ultrasonico derecho
int distanciaiz; // variable de distancia del ultrasonico izquierdo
int pausa; //retardo del led en encender y apaga dependiendo del sensor

void setup(){
pinMode(ledder,OUTPUT);
pinMode(lediz,OUTPUT);
pinMode(ledrojo,OUTPUT);
Serial.begin(9600);
}

void loop(){
distanciader = ultrader.Ranging(CM);
distanciaiz = ultraiz.Ranging(CM);

if( distanciaiz < 8 || distanciader < 8){
digitalWrite(ledrojo, HIGH);

}

if( distanciaiz < 40){
//pausa = (ultrader.Ranging(CM) * 10);
Serial.print("izquierda: ");
Serial.print(ultraiz.Ranging(CM)); // CM or INC
Serial.print(" cm " );
pausa = 50;
digitalWrite(lediz, HIGH);

}

if( distanciader < 40){
//pausa = (ultrader.Ranging(CM) * 10);
Serial.print("derecha: ");
Serial.print(ultrader.Ranging(CM)); // CM or INC
Serial.print(" cm " );
pausa = 50;
digitalWrite(ledder, HIGH);

}


delay(pausa);
Serial.println("." );
digitalWrite(ledder, LOW);
digitalWrite(lediz, LOW);
digitalWrite(ledrojo, LOW);
delay(pausa);
}

ItzX7Kk.jpg


6dLd3oA.jpg


96Wxi4I.jpg
 
.


Commodorian

Te comento que el dia de ayer sugerí que movieran tus otros dos temas a la zona donde se trata Arduino y Raspberry Pi para que sea mas fácil encontrar las cosas y tener el foro mas ordenado.


Espero que no lo tomes a mal, pero así será mas cómodo para quienes realicen alguna búsqueda y todo lo referido a Arduino se encuentre en el mismo sector.



Con respecto a este aporte hare la misma petición a los Moderadores del foro, no es mi interés molestarte.




Saludos, JuanKa.-
 
Atrás
Arriba