sábado, 20 de marzo de 2010

Robot controlado por Infrarrojos

El siguiente programa nos servirá para poder controlar nuestro robot a partir de un mando a distancia. Asociaremos acciones del robot a diferentes botones. Estas acciones serán girar y avanzar.

Tutorial SN754410NE

Circuito físico:

Integrado SN754410NE
--------------------
Pines 1, 9 y 16 a +5V
Pin 8 a +9-24V
Pines 2, 7 10 y 15 a la placa Arduino
Pines 4, 5, 12 y 13 a ground (Dos de ellos a la placa y dos a la fuente de alimentación)
Pines 3, 6 11 y 14 conectados a los motores

Receptor IR
-----------
1º pin receptor IR al 12 (digital)
2º pin receptor IR a ground
3º pin receptor IR a +5V



Código .pde


//Control de dos motores
//Nuestro robot se mueve segun pulsemos las teclas asociadas en el mando a distancia
#include "WProgram.h"
#include "NECIRrcv.h"
#define IRPIN 12

unsigned long ircode;
NECIRrcv ir(IRPIN);

const int input1=10;
const int input2=11;
const int input3=9;
const int input4=8;

unsigned long accion;

void setup()
{
Serial.begin(9600) ;
pinMode(input1, OUTPUT);
pinMode(input2, OUTPUT);
pinMode(input3, OUTPUT);
pinMode(input4, OUTPUT);
pinMode(IRPIN, INPUT);
ir.begin();
digitalWrite(input1, HIGH);
digitalWrite(input2, HIGH);
digitalWrite(input3, LOW);
digitalWrite(input4, LOW);
}

void loop()
{
while (ir.available())
{
ircode=ir.read();
accion=ircode;
Serial.println(ircode);
if(accion==2724069120)
{
//Giro sobre si mismo hacia la izquierda
digitalWrite(input1, LOW);//HACIA DELANTE LADO IZQUIERDO
digitalWrite(input2, HIGH);
digitalWrite(input3, HIGH);//HACIA ATRAS LADO DERECHO
digitalWrite(input4, LOW);
delay(1100);
accion=0;
}
if(accion==3776904960)
{
digitalWrite(input1, LOW);//HACIA DELANTE LADO IZQUIERDO
digitalWrite(input2, HIGH);
digitalWrite(input3, LOW);//HACIA DELANTE LADO DERECHO
digitalWrite(input4, HIGH);
delay(2500);
accion=0;
}
//Despues de pulsar cada botón la acción durará un tiempo determinado y el robot volverá a pararse
digitalWrite(input1, HIGH);//PARADO LADO IZQUIERDO
digitalWrite(input2, HIGH);
digitalWrite(input3, LOW);//PARADO LADO DERECHO
digitalWrite(input4, LOW);
}
}

No hay comentarios:

Publicar un comentario