lunes, 9 de octubre de 2017

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


Arduino: Robot Esquiva Obstáculos | 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); 
}


Comprar Arduino: CLICK


Comprar Chasis: CLICK



Comprar Driver L298n:CLICK


Comprar Sensor De Distancia: CLICK 


Comprar Servo: CLICK



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, 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!

viernes, 26 de agosto de 2016

Arduino: Modulo L298n Control de Motores DC [Parte 2]


Circuito


Ejemplo 1

int IN1 = 3; //Entrada motor Izquierdo hacia adelante
int IN2 = 5; //Entrada motor Izquierdo hacia atras
int IN3 = 6; //Entrada motor Derecho hacia atras
int IN4 = 9; //Entrada motor Derecho hacia adelante

void setup()
{

  pinMode (IN1, OUTPUT); //Pin3 = Salida    
  pinMode (IN2, OUTPUT); //Pin5 = Salida    
  pinMode (IN3, OUTPUT); //Pin6 = Salida       
  pinMode (IN4, OUTPUT); //Pin9 = Salida     
}

void ATRAS(){ 

  digitalWrite (IN1, LOW);  //Entrada motor Izquierdo hacia adelante  off
  digitalWrite (IN4, LOW);  //Entrada motor Derecho hacia adelante    off
  digitalWrite (IN2, HIGH); //Entrada motor Izquierdo hacia atras     on
  digitalWrite (IN3, HIGH); //Entrada motor Derecho hacia atras       on
   
}
void ADELANTE(){ 
  
  digitalWrite (IN1, HIGH); //Entrada motor Izquierdo hacia adelante  on
  digitalWrite (IN4, HIGH); //Entrada motor Derecho hacia adelante    on
  digitalWrite (IN2, LOW);  //Entrada motor Izquierdo hacia atras     off
  digitalWrite (IN3, LOW);  //Entrada motor Derecho hacia atras       off
}

void DERECHA(){ 
  
  digitalWrite (IN1, HIGH); //Entrada motor Izquierdo hacia adelante  on
  digitalWrite (IN4, LOW);  //Entrada motor Derecho hacia adelante    off
  digitalWrite (IN2, LOW);  //Entrada motor Izquierdo hacia atras     off
  digitalWrite (IN3, HIGH); //Entrada motor Derecho hacia atras       on
}

void IZQUIERDA(){ 
  
  digitalWrite (IN1, LOW);  //Entrada motor Izquierdo hacia adelante  off
  digitalWrite (IN4, HIGH); //Entrada motor Derecho hacia adelante    on
  digitalWrite (IN2, HIGH); //Entrada motor Izquierdo hacia atras     on
  digitalWrite (IN3, LOW);  //Entrada motor Derecho hacia atras       off
}
void loop()
{

ADELANTE(); //Función creada motor hacia adelante
delay(1000);//Se mueve 1 segundos 
     
ATRAS();     //Función creada motor hacia atras
delay(1000); //Se mueve 1 segundos 
        
DERECHA();  //Función creada motor hacia la derecha
delay(2000); //Se mueve 2 segundos 

IZQUIERDA();//Función creada motor hacia la izquierda
delay(2000);//Se mueve 2 segundos 



Ejemplo 2

int IN4 = 9; //Entrada motor Derecho hacia adelante

void setup()
{   
  pinMode (IN4, OUTPUT);  //Pin9 = Salida   
}


void loop()
  analogWrite(IN4,115); //Pwm en IN4
  delay(2000);          //Se mueve 2 segundos
  analogWrite(IN4,160); //Pwm en IN4
  delay(2000);          //Se mueve 2 segundos
  analogWrite(IN4,200); //Pwm en IN4
  delay(2000);          //Se mueve 2 segundos
  analogWrite(IN4,255); //Pwm en IN4
  delay(3000);          //Se mueve 3 segundos
}