jueves, 6 de octubre de 2016

Arduino: Robot Esquiva Obstaculos | Sensor de Distancia Ultrasonido HC-SR04


Ejemplo 1



/*
----------------------------------
Conectemos Ideas
----------------------------------

Robot Esquiva Obstáculos/Chasis_4WD/Arduino/Sensor HCSR04

*/
int Led=13; //Indicador Led Conectado Al Pin 13 Del Arduino
/*
/////////////////////
Entradas modulo L298N
/////////////////////
*/
//////////////////////////////////////////Adelante////////////////////////////////////////////////////
int IN1 = 3; //Entrada In1 de Modulo L298n conectada al pin 3 del arduino (motores izquierdos Adelante)
int IN4 = 9; //Entrada In4 de Modulo L298n conectada al pin 9 del arduino (motores derechos Adelante)
///////////////////////////////////////////Atras/////////////////////////////////////////////////////
int IN2 = 5; //Entrada In2 de Modulo L298n conectada al pin 5 del arduino (motores izquierdos Atras) 
int IN3 = 6; //Entrada In3 de Modulo L298n conectada al pin 6 del arduino (motores izquierdos Atras)      

///////////////////////////////////////////Pin Sensor/////////////////////////////////////////////////////
int ECHO_PIN = 10;   //Echo Del Sensor Ultrasonido Conectado Al Pin 10 del arduino Uno
int TRIGGER_PIN = 7; //Trigger Del Sensor Ultrasonido Conectado Al Pin 7 del arduino Uno

long Tiempo;                     //la utilizamos para guardar el tiempo en que se activa (ECHO_PIN)
long Conversion_Distancia_cm;    //la utilizamos para guardar la formula de conversion

void setup() {                
  
  pinMode(Led, OUTPUT);          //      Pin13 = salida
  pinMode(ECHO_PIN, INPUT);      //   ECHO_PIN = entrada
  pinMode(TRIGGER_PIN, OUTPUT);  //TRIGGER_PIN = salida  
  
  pinMode(IN1, OUTPUT);  //Pin3 = Salida  
  pinMode(IN2, OUTPUT);  //Pin5 = Salida
  pinMode(IN3, OUTPUT);  //Pin6 = Salida  
  pinMode(IN4, OUTPUT);  //Pin9 = Salida
           }
  
void loop() {
    
 /*//////////////////////////////////////////
 Generamos el pulso en (TRIGGER_PIN,) de 10us
 //////////////////////////////////////////*/
  digitalWrite(TRIGGER_PIN, LOW);            //Garantizamos que el pulso este en bajo
  delayMicroseconds(2);
  digitalWrite(TRIGGER_PIN, HIGH);           // (TRIGGER_PIN) En Alto
  delayMicroseconds(10);                     // Pulso de 10 us
  digitalWrite(TRIGGER_PIN, LOW);            // (TRIGGER_PIN) Apagamos el pulso de 10 us

 /*//////////////////////////////////////////////////////////////////////////////////////////////
 Guardamos el pulso en (ECHO_PIN) y utilizamos la formula (Tiempo/2) / 29 para medir la distancia
 //////////////////////////////////////////////////////////////////////////////////////////////*/
  Tiempo = pulseIn(ECHO_PIN, HIGH);          // Guardamos el tiempo en que se activa (ECHO_PIN)
  Conversion_Distancia_cm = (Tiempo/2) / 29; // Conversion del sensor a Cm
  
  
   if (Conversion_Distancia_cm <= 10 && Conversion_Distancia_cm >= 1){
    digitalWrite(Led, HIGH);            //Led encendido conectado a pin 13
    ////////Atras///////
    analogWrite(IN2,255);               //Pwm en IN2
    analogWrite(IN3,255);               //Pwm en IN3
    analogWrite(IN1,0);                 
    analogWrite(IN4,0);                 
    delay(500);
    digitalWrite(Led, HIGH);            
    ////////Izquierda///////
    analogWrite(IN2,255);               //Pwm en IN2
    analogWrite(IN3,0);                 //
    analogWrite(IN1,0);                 //
    analogWrite(IN4,255);               //Pwm en IN4
    delay(1000);                        //Gira durante el tiempo establecido
  }
                                       
else {
    ////////Adelante///////
    digitalWrite(Led, LOW);            //Led Apagado
    analogWrite(IN1,255);              //Pwm en IN2
    analogWrite(IN4,255);              //Pwm en IN3
    analogWrite(IN2,0);                
    analogWrite(IN3,0);                
    }
}

Ejemplo 2



Si necesitas el código, deja tu correo electrónico  en los comentarios del canal en: