Robot de orugas de Lorgi, David y Alex

Sobre un chasis de cadenas con dos motores, hemos colocado un Arduino, una batería de 12 voltios y un driver de motores, el doble puente H (L298N). El precio de este driver en Aliexpress es de 1,45 €. Los pines que utiliza el driver de motores son el 2, 3, 4 y 5. También dispone de un receptor de infrarrojos conectado en el pin 6. Aquí se pùede encontrar información sobre la última modificación.

El chasis oruga está comprado en Aliexpress por 66 €. Tiene una longitud de 235 mm, una anchura de 180 mm y una altura de 70 mm. Su peso in los otros elementos es de 845 gramos. Dispone de de dos motorreductores de 12 voltios, pero pueden funcionar con cinco voltios perfectamente.

La pieza que alberga la batería y sobre la que se sitúan la placa Arduino UNO, el driver de motores y el interruptor está construida con la impresora 3D y su archivo se puede encontrar en Thingiverse.

Programa de Arduino

#include <IRremote.h>

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

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==-1786){ // Código de la tecla adelante

digitalWrite(2, LOW);

digitalWrite(3, HIGH);

digitalWrite(4, LOW);

digitalWrite(5, HIGH);

}

if (tecla==31620){ // Código de la tecla atras

digitalWrite(2, HIGH);

digitalWrite(3, LOW);

digitalWrite(4, HIGH);

digitalWrite(5, LOW);

}

if (tecla==11220){ // Código de la tecla izquierda

digitalWrite(2, LOW);

digitalWrite(3, HIGH);

digitalWrite(4, HIGH);

digitalWrite(5, LOW);

}

if (tecla==-9946){ // Código de la tecla derecha

digitalWrite(2, HIGH);

digitalWrite(3, LOW);

digitalWrite(4, LOW);

digitalWrite(5, HIGH);

}

if (tecla==31110){ // Código de la tecla encender/apagar, para parar el robot

digitalWrite(2, LOW);

digitalWrite(3, LOW);

digitalWrite(4, LOW);

digitalWrite(5, LOW);

}

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

}

delay(100); //Espera 100 milisegundos

}

Este es el programa para la pinza:

#include <IRremote.h>

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

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 (8, OUTPUT);

pinMode (9, OUTPUT);

pinMode (10, OUTPUT);

pinMode (3, OUTPUT);

digitalWrite(8, HIGH);

digitalWrite(9, HIGH);

digitalWrite(10, HIGH);

}

void loop() {

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

tecla=valor.value;

Serial.println(tecla);

if (tecla==2408){ // Código de la tecla adelante

digitalWrite(8, LOW);

digitalWrite(9, LOW);

digitalWrite(10, LOW);

delay(100);

digitalWrite(8, HIGH);

digitalWrite(9, HIGH);

digitalWrite(10, HIGH);

}

if (tecla==2402){ // Código de la tecla atras

digitalWrite(8, HIGH);

digitalWrite(9, HIGH);

digitalWrite(10, LOW);

delay(100);

digitalWrite(8, HIGH);

digitalWrite(9, HIGH);

digitalWrite(10, HIGH);

}

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

}

delay(100); //Espera 100 milisegundos

}