Robot Arduino controlado con mando a distancia

Este pequeño robot utiliza una placa controladora Arduino UNO, junto con una Arduino-Imagina, diseñada por el equipo ROBOLOT. Lo hemos programado para poder controlar su movimiento mediante un mando a distancia.

El vehículo está montado sobre un Arduino UNO, junto con una shield Imagina Arduino del equipo Robolot.

Las ruedas las mueven dos servos transformados en motores de corriente continua. Se controlan con los drivers de motores de la Imagina Arduino. El motor A se controla con los pines 7, 8 y 9 y el motor B con los pines 12, 13 y 14. En el caso del motor A los pines 7 y 8 determinan el sentido de giro y el pin 9, cuando se utiliza, la velocidad. Los valores que puede aceptar este pin 9 van desde 0 a 255. Si se le pone el valor 0 el motor está parado.

Controlar el vehículo con un mando a distancia de infrarrojos

Para poder utilizar el mando a distancia por infrarrojos se ha de retirar el módulo Bluetooth, pues de otra forma uno inhabilita al otro. En la placa Imagina Android el fototransistor receptor de infrarrojos está conectado al pin 11.

Programa para encender y apagar un Led con un mando a distancia de TV

El Led estará conectado al pin 3. En este caso se trabaja con las teclas 1 y 2 del mando a distancia, para encender y apagar el Led conectado en el pin 3.

#include <IRremote.h>

IRrecv receptorinfra(11); //Se crea un receptor de infrarrojos de nombre "receptorinfra", conectado al pin 11

decode_results valor; //En la variable "valor" se guardan los valores enviados por el mando a distancia

int tecla; //En esta variable se guardan los valores asignados a cada tecla del mando a distancia

void setup()

{

Serial.begin(9600);

receptorinfra.enableIRIn(); // Se reinicia el receptor de infrarojos

pinMode (3, OUTPUT);

}

void loop() {

if (receptorinfra.decode(&valor)) { //Si se recibe algun dato del mando a distancia

tecla=valor.value;

Serial.println(tecla);

if (tecla==16){ // Código de la tecla 1

digitalWrite(3, HIGH);

}

if (tecla==2064){ // Código de la tecla 2

digitalWrite(3, LOW);

}

receptorinfra.resume(); // Recibe el siguiente valor

}

delay(100); //Espera 100 milisegundos

}

El mismo programa para mover el robot adelante y atrás

#include <IRremote.h>

IRrecv receptorinfra(11); //Se crea un receptor de infrarrojos de nombre "receptorinfra", conectado al pin 11

decode_results valor; //En la variable "valor" se guardan los valores enviados por el mando a distancia

int tecla; //En esta variable se guardan los valores asignados a cada tecla del mando a distancia

void setup()

{

Serial.begin(9600);

receptorinfra.enableIRIn(); // Se reinicia el receptor de infrarojos

pinMode (3, OUTPUT);

}

void loop() {

if (receptorinfra.decode(&valor)) { //Si se recibe algun dato del mando a distancia

tecla=valor.value;

Serial.println(tecla);

if (tecla==16){ // Código de la tecla 1

//Mover hacia adelante

//Rueda derecha

digitalWrite(7,HIGH);

digitalWrite(8,LOW);

//Rueda izquierda

digitalWrite(12,LOW);

digitalWrite(13,HIGH);

}

if (tecla==2064){ // Código de la tecla 2

//Mover hacia atras

//Rueda derecha

digitalWrite(7,LOW);

digitalWrite(8,HIGH);

//Rueda izquierda

digitalWrite(12,HIGH);

digitalWrite(13,LOW);

}

receptorinfra.resume(); // Recibe el siguiente valor

}

delay(100); //Espera 100 milisegundos

}

A continuación podemos ver otras imágenes de este robot.