Nuestro primer Robot con Arduino

En este punto despues de haber experimentado con algunas soluciones usando arduino, hemos determinado que en el primer proyecto de crear Robots que pueden ser controlados  via bluetooth, he construido este pequeño “juguete” que prentende motivar la construccion de estas maquinitas electronicas con las cuales no solo nos divertiremos, sino que tambien aprenderemos, todo sobre robots y control; asi como programacion usando el entorno de desarrollo de arduino.

Conectorizacion del dispositivo bluetooth HC05

arduino_bluetooth_serial-HC06

Conectorizacion del proyecto completo

Proyecto_robot_hvallejo.fw

Por lo pronto dejo aqui el código para quienes esten interesados, subire poco a poco fotografias paso a paso de la parte mecanica y electronica.

Programa básico para el control de motores con bluetooth

int izqA = 5;
int izqB = 6;
int derA = 9;
int derB = 10;
int vel = 200; // Velocidad de los motores (0-255)
int estado = 'g'; // inicia detenido

void setup() {
Serial.begin(9600); // inicia el puerto serial para comunicacion con el Bluetooth
pinMode(derA, OUTPUT);
pinMode(derB, OUTPUT);
pinMode(izqA, OUTPUT);
pinMode(izqB, OUTPUT);

}

void loop() {

if(Serial.available()>0){ // lee el bluetooth y almacena en estado
estado = Serial.read();
}
if(estado=='a'){ // Boton desplazar al Frente
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, vel);
analogWrite(izqA, vel);

}
if(estado=='b'){ // Boton IZQ
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, vel);
}
if(estado=='c'){ // Boton Parar
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
}
if(estado=='d'){ // Boton DER
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(izqA, 0);
analogWrite(derA, vel);
}

if(estado=='e'){ // Boton Reversa
analogWrite(derA, 0);
analogWrite(izqA, 0);
analogWrite(derB, vel);
analogWrite(izqB, vel);
}
if (estado =='f'){ // Boton ON se mueve sensando distancia

}
if (estado=='g'){ // Boton OFF, detiene los motores no hace nada
}
}

Segunda version del programa (este programa no tiene la seccion de bluetooth)

//Declaramos las constantes para los pines PWM

const int AIA = 9;  //Pin 9 conectado a A-IA
const int AIB = 5;  //Pin 5 conectado a A-IB
const int BIA = 10; //Pin 10 conectado a B-IA
const int BIB = 6;  //Pin 6 conectado a B-IB

//Cambia la velocidad gracias a los PWM variando de 0-255

byte velocidad = 255;
void setup()
   {
   pinMode(AIA, OUTPUT); //Configuracion de los pines como salidas
   pinMode(AIB, OUTPUT);
   pinMode(BIA, OUTPUT);
   pinMode(BIB, OUTPUT);
   }

//Lazo principal con las direcciones: adelante, atras, izquierda y derecha.
//Lo que va a hacer en este caso es mover el robot en cada dirección durante 1s,
//puedes modificar esto como quieras o agregar sensores para que en función del dato
//captado por el sensor se mueva en concordancia.

void loop()
   {
   adelante();
   delay(1000);
   atras();
   delay(1000);
   izquierda();
   delay(1000);
   derecha();
   delay(1000);
   }

//Configuracion de cada dirección para que el controlador lo haga

void atras()
   {
   analogWrite(AIA, 0);
   analogWrite(AIB, velocidad);
   analogWrite(BIA, 0);
   analogWrite(BIB, velocidad);
   }

//Si te fijas, para cambiar la dirección de giro es justo lo contrario al anterior

void adelante()
   {
   analogWrite(AIA, velocidad);
   analogWrite(AIB, 0);
   analogWrite(BIA, velocidad);
   analogWrite(BIB, 0);
   }

void izquierda()
   {
   analogWrite(AIA, velocidad);
   analogWrite(AIB, 0);
   analogWrite(BIA, 0);
   analogWrite(BIB, velocidad);
   }

void derecha()
   {
   analogWrite(AIA, 0);
   analogWrite(AIB, velocidad);
   analogWrite(BIA, velocidad);
   analogWrite(BIB, 0);
   }

Fotografias reales del proyecto

PuenteHconectado proyectoFinal

Reglamento para concurso de “Futbolito de Robots”