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
Conectorizacion del proyecto completo
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
Reglamento para concurso de “Futbolito de Robots”