El siguiente ejemplo es igual al que hemos visto anteriormente, pero le hemos incluido unos LEDs para marcar el estado del robot.
Cuando avance hacia delante encenderemos los dos LEDs, cuando gire hacia un lado solo encenderemos uno, y cuando gire hacia el otro lado, encenderemos el otro LED.
El circuito lo implementaremos de la siguiente manera:
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
Tutorial SN754410NE
//Control de dos motores
//Robot controlado a partir de un mando a distancia.
//Se encenderán dos LEDs cuando avanze, el de la izquierda cuando gire en esa dirección y el de la derecha cuando gire en esa dirección
#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;
const int Led1=7;
const int Led2=13;
int duracion=0;
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();
pinMode(Led1, OUTPUT);
pinMode(Led2, OUTPUT);
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==2707357440)//Si se pulsa el 1 el tiempo de cada movimiento será de 2 sg
{
duracion=2000;
accion=0;
}
if(accion==2724069120)//Si se pulsa el 2 el tiempo de cada movimiento será de 3'4 sg
{
duracion=3400;
accion=0;
}
if(accion==3776904960)//Si se pulsa el 3 el tiempo de cada movimiento será de 6'5 sg
{
duracion=6500;
accion=0;
}
if(accion==3041591040)
{
//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);
digitalWrite(Led1, HIGH);
delay(duracion);
accion=0;
}
if(accion==3058302720)
{
digitalWrite(input1, LOW);//HACIA DELANTE LADO IZQUIERDO
digitalWrite(input2, HIGH);
digitalWrite(input3, LOW);//HACIA DELANTE LADO DERECHO
digitalWrite(input4, HIGH);
digitalWrite(Led1, HIGH);
digitalWrite(Led2, HIGH);
delay(duracion);
accion=0;
}
if(accion==4111138560)
{
//Giro derecha
digitalWrite(input1, HIGH);//PARADO LADO IZQUIERDO
digitalWrite(input2, LOW);
digitalWrite(input3, HIGH);//HACIA ATRAS LADO DERECHO
digitalWrite(input4, LOW);
digitalWrite(Led2, HIGH);
delay(duracion);
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);
digitalWrite(Led1, LOW);
digitalWrite(Led2, LOW);
}
}
No hay comentarios:
Publicar un comentario