lunes, 9 de octubre de 2017

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


En este vídeo se muestran dos ejemplos de un robot esquiva obstáculos con Arduino implementando el sensor de distancia HC-SR04


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

Robot chasis 4WD /Arduino/Sensor HCSR04/Servo

*/

#include <Servo.h> // Libreria de Arduino para usar el servo-motor
Servo Servo1;      //Crear un nuevo Objeto tipo "Servo" llamado Servo1

#include <NewPing.h>     // Libreria de Arduino para usar el Sensor HCSR04/ link http://playground.arduino.cc/Code/NewPing#Download
#define TRIGGER_PIN  7   //Trigger Del Sensor Ultrasonido Conectado Al Pin 7 del arduino Uno
#define ECHO_PIN     10  //Echo Del Sensor Ultrasonido Conectado Al Pin 10 del arduino Uno
#define MAX_DISTANCE 100 //Maxima Disctancia que establecemos al sensor (100 Cm en este caso)

NewPing HCSR04(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); 

unsigned int uS = HCSR04.ping_cm(); //Conversion de medida sensor a Cm.

/*
/////////////////////
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)

///////////////////////////////Distancias////////////////////////////
const int Minima = 15;
const int Deseada=22;
const int Maxima=30;



//////////////////////////////Posision Servo/////////////////////////
const int Servo1_Centro=105;
const int Servo1_Derecha=0;
const int Servo1_Izquierda=175;

int Distancia_Servo_Derecha=0;
int Distancia_Servo_Centro=0;
int Distancia_Servo_Izquierda=0;

//////////////////////////////////////////////////////////////////////

void setup()
{
 Servo1.attach(11);

  pinMode(IN1, OUTPUT); // Pin 3 arduino = Salida
  pinMode(IN2, OUTPUT); // Pin 5 arduino = Salida
  pinMode(IN3, OUTPUT); // Pin 6 arduino = Salida
  pinMode(IN4, OUTPUT); // Pin 9 arduino = Salida
}

void loop()
{

    DatosHCSR04();
    if ((Distancia_Servo_Centro == 0) || ( Distancia_Servo_Centro > Maxima))
    {
     Adelante();
     delay(50);
     
    }
   if ( (Distancia_Servo_Centro <= Maxima) && ( Distancia_Servo_Centro >= Deseada))
    {
     Adelante();
     delay(50);
   } 
    
    else
   {
      if ( (Distancia_Servo_Centro <= Deseada) && ( Distancia_Servo_Centro >= Minima))
      {        
        Analizar();
        Decidir();
      } 
      else 
      {
        if ( (Distancia_Servo_Centro < Minima) && (Distancia_Servo_Centro !=0))
       {
         Stop();
          delay(100);
          Atras();
          delay(500);
          Izquierda();
          delay(1400);
          Analizar();
          Decidir_Giro_Atras();
      }
    }
   }
}

/*
//////////////////////////////////////////////////////
DatosHCSR04 con el servo en posición de (Servo1_Centro)
//////////////////////////////////////////////////////
*/

void DatosHCSR04(void)
{   
   Servo1.write(Servo1_Centro);
   delay(100);
   Distancia_Servo_Centro=HCSR04.ping_cm();
   
}

/*
///////////////////////////////////////////////////////////////////
Gira el servo para analizar la distancia ¡derecha,centro,izquierda! 
///////////////////////////////////////////////////////////////////
*/

void Analizar(void)
{
   Stop();
   delay(500);
    
   Servo1.write(Servo1_Derecha);
   delay(500);
   Distancia_Servo_Derecha=HCSR04.ping_cm();

   Servo1.write(Servo1_Centro);
   delay(500);
   
   Servo1.write(Servo1_Izquierda);
   delay(500);
   Distancia_Servo_Izquierda=HCSR04.ping_cm();

   Servo1.write(Servo1_Centro);
   delay(500);
   Distancia_Servo_Centro=HCSR04.ping_cm();

}

/*
//////////////////////////
Tomar la decisión correcta 
//////////////////////////
*/

void Decidir(void)
{
  if(Distancia_Servo_Derecha>Distancia_Servo_Izquierda)
  {
    Derecha();
    delay(2000);
  }

 else
  {
   if(Distancia_Servo_Izquierda>Distancia_Servo_Derecha)
    {
    Izquierda();
    delay(2000);
    }
  }
}

void Decidir_Giro_Atras(void)
{
  if(Distancia_Servo_Derecha>Distancia_Servo_Izquierda)
  {
    Atras_Derecha();
    delay(2500);
  }

 else
  {
   if(Distancia_Servo_Izquierda>Distancia_Servo_Derecha)
    {
    Atras_Izquierda();
    delay(2500);
    }
  }
}

/*
////////////////////////////////////////////////////
Creamos los movimientos respectivos de nuestro carro
////////////////////////////////////////////////////
*/

void Stop(void)
{
     analogWrite(IN1, 0);     
     analogWrite(IN2, 0); 
     analogWrite(IN3, 0);    
     analogWrite(IN4, 0);
}

void Adelante(void)
{
      analogWrite(IN2, 0);     
      analogWrite(IN3, 0); 
      analogWrite(IN1, 255); // Puedes colocar directamente el valor PWM
      analogWrite(IN4, 255); // Puedes colocar directamente el valor PWM
}

void Atras(void)
{
       analogWrite(IN1, 0);    
       analogWrite(IN4, 0);
       analogWrite(IN2, 255);  
       analogWrite(IN3, 255); 
}

void Derecha(void)
{
       analogWrite(IN1, 0);     
       analogWrite(IN3, 0);
       analogWrite(IN2,255);
       analogWrite(IN4,255); 
}

void Izquierda(void)
{
      analogWrite(IN2, 0);     
      analogWrite(IN4, 0); 
      analogWrite(IN1,255);  
      analogWrite(IN3,255); 
}


void Atras_Izquierda(void)
{
       analogWrite(IN1, 0);    
       analogWrite(IN3, 0);
       analogWrite(IN2, 255);  
       analogWrite(IN4, 0); 
}


void Atras_Derecha(void)
{
       analogWrite(IN1, 0);    
       analogWrite(IN2, 0);
       analogWrite(IN4, 0);  
       analogWrite(IN3, 255); 
}

domingo, 11 de diciembre de 2016

Arduino: Control Carro Con Acelerómetro + Bluetooth + Android [Parte 1]


En este vídeo usamos el acelerómetro del celular para controlar un chasis 4WD por medio de el modulo bluetooth hc-05 y Arduino,al no mover el celular hacia algún sentido se enciende el led indicador 

La aplicación se realizo en App Inventor


Componentes


-Chasis 4wd arduino

-Arduino uno
-Modulo Bluetooth hc05
-Driver l298n
-4 Motores DC
-1 led
-Fuente de alimentación
-Regulador de voltaje

Si te gusto el vídeo apoya al canal con un like o mejor aun te puedes suscribir al canal!

martes, 15 de noviembre de 2016

Simulador Drone Racing League FPV | DRL


jueves, 27 de octubre de 2016

Arduino: HC-05 Bluetooth con App inventor Android [Encender Led]


Circuito

Código

int Led=13;    //Pin 13 de nuestro arduino en donde conectamos el led indicador
int Lectura=0; //Lo utilizamos para guardar la lectura del modulo

void setup(){

Serial.begin(9600); //Inicializamos el puerto serial a 9600 baudios
pinMode(Led,OUTPUT);//Led = Salida

void loop(){
 if(Serial.available()>0){ //Habilitamos el puerto serial
 Lectura = Serial.read();  // leemos el dato enviado y lo guardamos en Lectura
                         }

 if (Lectura =='e'){       // Si el dato leido es = e ,encender
 digitalWrite(Led,HIGH);   //encendemos el led
                   }

 if(Lectura=='a')  {       // Si el dato leido es = a ,apagar
 digitalWrite(Led,LOW);    //Apagamos el led
                   }
             }  

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:


jueves, 15 de septiembre de 2016

Arduino: Sensor SHARP GP2Y0A21YK [Medir Distancia]


Circuito

Ejemplo 1:

int SENSOR = A0;  // Pin análogo A0 en donde está conectada la señal del Sensor

int led=13;       //Pin 13 de nuestro arduino en donde conectamos el led indicador

//float lectura;     //lo utilizamos para leer el valor  del Sensor
int lectura;
float  conversion; //Lo utilizamos para utilizar la formula de conversion

void setup() {

  pinMode(led,OUTPUT); //Led = Salida

}

void loop(){

lectura = analogRead(SENSOR); //Leemos el Pin análogo A0 (Sensor)
conversion= pow(3027.4 / lectura, 1.2134);

//if (lectura >=80 && lectura <=500){
 // conversion = (4800)/(lectura-11);
 // }
  if (conversion>=0 && conversion<10){ //Si el valor se encuentra entre 0 y 10 cm!
    digitalWrite(led,HIGH);} //encendemos el led
    else{                    //Si no
    digitalWrite(led,LOW);   //Apagamos el led
    }
  }
 
Ejemplo 2

int SENSOR = A0;  // Pin análogo A0 en donde está conectada la señal del Sensor
int led=13;        //Pin 13 de nuestro arduino en donde conectamos el led indicador
int IN2 = 5;       //Entrada motores Izquierdos hacia atras
int IN3 = 6;       //Entrada motores Derechos hacia atras
int lectura;       //lo utilizamos para leer el valor  del Sensor Sharp 2Y0A21
int conversion;    //Lo utilizamos para guardar el valor de la formula de conversion

void setup() {

  pinMode(led,OUTPUT); //Led = Salida
   pinMode (IN2, OUTPUT);  //Pin5 = Salida
    pinMode (IN3, OUTPUT);  //Pin6 = Salida  

}

void loop(){

lectura = analogRead(SENSOR); //Leemos el Pin análogo A0 (Sensor)
conversion= pow(3027.4 / lectura, 1.2134); //Conversion a CM

  if (conversion>=0 && conversion<10){  //Si el valor se encuentra entre 0 y 10 cm!
   digitalWrite(led,HIGH);              //encendemos el led
    analogWrite(IN2,255);               //Pwm en IN2
    analogWrite(IN3,255);               //Pwm en IN3
    delay(1000);                     }  //Se activa 1 segundo
    else{                               //Si no
    digitalWrite(led,LOW);              //Apagamos el led
    analogWrite(IN2,0);                 //Pwm en IN2
    analogWrite(IN3,0);                 //Pwm en IN3
        }
          }

sábado, 3 de septiembre de 2016

Processing OpenCV [Ejemplos]

En este vídeo se muestran varios ejemplos que podemos usar al instalar OpenCV en Processing , Si quieres empezar a aprender sobre procesamiento de imágenes con un software diferente a MATLAB, en este caso la libreria de OpenCV que es open source es una muy buena opción .

Instalación: Hay muy poca información acerca de la instalación, pero encontré un documento en donde seguí todos los pasos y me funciono, así que lo comparto! 
http://joaquindiazduran-proceso.blogs...

SI siguen bien los pasos, les va a funcionar!