Hola. Buenos días. Estoy teniendo problema con el siguiente programa. Es el receptor de un control de auto con un guante. No lo puedo compilar.
El codigo es:
// Código Receptor
#include <VirtualWire.h>
//Variables para el control de los motores
int a1 = 5;
int a2 = 6;
int b1 = 7;
int b2 = 8;
int c1 = 9;
int c2 = 10;
int d1 = 11;
int d2 = 12;
int pwm = 3;
int vel = 320;
// Variables para la recepción de data por RF
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
float dato1=0;
float dato2=0;
void setup()
{
Serial.begin(9600);
pinMode(a1, OUTPUT);
pinMode(a2, OUTPUT);
pinMode(b1, OUTPUT);
pinMode(b2, OUTPUT);
pinMode(c1, OUTPUT);
pinMode(c2. OUTPUT);
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(pwm, OUTPUT);
analogWrite (pwm,vel);
// Se inicializa el RF
vw_setup(2000); // Velocidad: Bits por segundo
vw_set_rx_pin(2); // Pin 2 como entrada del RF
vw_rx_start(); // Se inicia como receptor
}
void loop()
{
// Verificamos si hay un dato valido en el RF
if (vw_get_message((uint8_t *)buf,&buflen))
{
int i;
String DatoCadena="";
if((char)buf[0]=='i') // Verificamos el inicio de trama
{
for (i = 1; i < buflen; i++)
{
DatoCadena.concat((char)buf[i]);
}
// Si la trama es la correcta se guarda el dato transferido
dato1=DatoCadena.toInt();
Serial.print("gx: ");
Serial.println(dato1);
}
else if((char)buf[0]=='f') // Verificamos el inicio de trama
{
for (i = 1; i < buflen; i++)
{
DatoCadena.concat((char)buf[i]);
}
// Si la trama es la correcta, se gurda el dato transferido
dato2=DatoCadena.toFloat();
Serial.print("gy: ");
Serial.println(dato2);
}
// Se sintetiza la dirección que debe tomar el movil...
// Dependiendo de los datos recibidos
if (dato1>25)
{
derecha();
}
else if(dato1<-25)
{
izquierda();
}
else if (dato2>25)
{
adelante();
}
else if(dato2<-25)
{
atras();
}
else
{
parar();
}
}
}
// Funciones de dirección del movil
void adelante()
{
digitalWrite (a1, LOW);
digitalWrite (a2, HIGH);
digitalWrite (b1, HIGH);
digitalWrite (b2, LOW);
digitalWrite (c1, HIGH);
digitalWrite (c2, LOW);
digitalWrite (d1, HIGH);
digitalWrite (d2, LOW);
}
void atras()
{
digitalWrite (a2, LOW);
digitalWrite (a1, HIGH);
digitalWrite (b2, HIGH);
digitalWrite (b1, LOW);
digitalWrite (c2, HIGH);
digitalWrite (c1, LOW);
digitalWrite (d2, HIGH);
digitalWrite (d1, LOW);
}
void derecha()
{
digitalWrite (a2, LOW);
digitalWrite (a1, HIGH);
digitalWrite (b1, HIGH);
digitalWrite (b2, LOW);
digitalWrite (c2, HIGH);
digitalWrite (c1, LOW);
digitalWrite (d1, HIGH);
digitalWrite (d2, LOW);
}
void izquierda()
{
digitalWrite (a1, LOW);
digitalWrite (a2, HIGH);
digitalWrite (b2, HIGH);
digitalWrite (b1, LOW);
digitalWrite (c1, HIGH);
digitalWrite (c2, LOW);
digitalWrite (d2, HIGH);
digitalWrite (d1, LOW);
}
void parar()
{
digitalWrite (a1, LOW);
digitalWrite (a2, LOW);
digitalWrite (b1, LOW);
digitalWrite (b2, LOW);
digitalWrite (c1, LOW);
digitalWrite (c2, LOW);
digitalWrite (d1, LOW);
digitalWrite (d2, LOW);
}
El error que me salta es:
exit status 1
Error compilando para la tarjeta Arduino/Genuino Uno.
Espero que me puedan ayudar. No sé donde puede estar el error. Mil gracias