Error codigo en la parte correspondiente a mando IR

Hola, soy nuevísimo en el foro, pediría un poco de compresión si cometo errores de uso, aunque he leído las bases.

Tengo un problema con el código de Arduino para el típico proyecto de vehículo, dirigido con mando IR.

Me sale al compilar, en la parte de código del IR un error por cada codigo (Adelante, Atrás, Derecha, etc).

Cuelgo el código y el error, es algo del formato de las llaves, pero por mas que investigo no encuentro la solución.

Gracias a todos por adelantado.

Jesús Romero

Codigo_vehiculo.txt (6.03 KB)

error.txt (27.5 KB)

El código tienes que ponerlo con el tag correspondiente.

Prueba si ahora compila, yo no tengo la libreria de control de motor y no lo puedo probar.

#include <LEANTEC_ControlMotor.h>   //Incluimos la librería control de motores  

// Configuramos los pines que vamos a usar
ControlMotor control(2,3,7,4,5,6);  
int MotorDer1=2; //El pin 2 de arduino se conecta con el pin In1 del L298N 
int MotorDer2=4; //El pin 4 de arduino se conecta con el pin In2 del L298N 
int MotorIzq1=7; //El pin 7 de arduino se conecta con el pin In3 del L298N 
int MotorIzq2=8; //El pin 8 de arduino se conecta con el pin In4 del L298N 
int PWM_Derecho=5; //El pin 5 de arduino se conecta con el pin EnA del L298N 
int PWM_Izquierdo=6; //El pin 6 de arduino se conecta con el pin EnB del L298N 
int velocidad=150; //Declaramos una variable para guardar la velocidad 

/* *** movido ***
void setup()  {    //Configuramos los pines como salida
   pinMode(MotorDer1, OUTPUT);    pinMode(MotorDer2, OUTPUT);
   pinMode(MotorIzq1, OUTPUT);    pinMode(MotorIzq2, OUTPUT);
   pinMode(PWM_Derecho, OUTPUT);   pinMode(PWM_Izquierdo, OUTPUT); 
}  */

void derecha_horario(){  
   /*En esta fución la rueda derecha girará en sentido horario*/
  digitalWrite(MotorIzq1,HIGH);  
  digitalWrite(MotorIzq,LOW);
  analogWrite(PWM_Derecho,200);//Velocidad motor derecho 200
  } 

void derecha_antihorario(){
   /*En esta fución la rueda derecha girará en sentido antihorario*/   
  digitalWrite(MotorDer1,LOW);  
  digitalWrite(MotorDer,HIGH);
  analogWrite(PWM_Derecho,200);//Velocidad motor derecho 200
  } 

void izquierda_horario(){  
  /*En esta fución la rueda derecha girará en sentido horario*/   
  digitalWrite(MotorIzq1,HIGH);  
  digitalWrite(MotorIzq2,LOW);
  analogWrite(PWM_Izquierdo,200);//Velocidad motor izquierdo 200
  }

void izquierda_antihorario(){  
  /*En esta fución la rueda derecha girará en sentido antihorario*/   
  digitalWrite(MotorIzq1,LOW);  
  digitalWrite(MotorIzq2,HIGH);
  analogWrite(PWM_Izquierdo,200);//Velocidad motor izquierdo 200
  }

// Añadimos codigo de Mando IR (este codigo está copiado y pendiente de comprobar su funcionamiento)

/*  ___   ___  ___  _   _  ___   ___   ____ ___  ____
   / _ \ /___)/ _ \| | | |/ _ \ / _ \ / ___) _ \|    \
  | |_| |___ | |_| | |_| | |_| | |_| ( (__| |_| | | | |
   \___/(___/ \___/ \__  |\___/ \___(_)____)___/|_|_|_|
                    (____/
   www.osoyoo.com IR remote control smart car
   program tutorial : http://osoyoo.com/2017/04/16/control-smart-car-with-ir/
    Copyright John Yu
*/
#include <IRremote.h>
/*Declare L298N Dual H-Bridge Motor Controller directly since there is not a library to load.*/
//Define L298N Dual H-Bridge Motor Controller Pins
#define dir1PinL  2    //Motor direction
#define dir2PinL  4    //Motor direction
#define speedPinL 6    // Needs to be a PWM pin to be able to control motor speed

#define dir1PinR  7    //Motor direction
#define dir2PinR  8   //Motor direction
#define speedPinR 5    // Needs to be a PWM pin to be able to control motor speed

#define IR_PIN    3 //IR receiver Signal pin connect to Arduino pin 3

#define IR_ADVANCE       EC27D43D     //code from IR controller "▲" button
#define IR_BACK          86BD99C      //code from IR controller "▼" button
#define IR_RIGHT         A23BD824     //code from IR controller ">" button
#define IR_LEFT          1A422E43     //code from IR controller "<" button
#define IR_STOP          7295A904       //code from IR controller "OK" button
#define IR_turnsmallleft 1D0       //code from IR controller "#" button
#define SPEED 180       //speed of car
#define DelayTime 500       //speed of car

enum DN
{
  GO_ADVANCE, //go forward
  GO_LEFT, //left turn
  GO_RIGHT,//right turn
  GO_BACK,//backward
  STOP_STOP,
  DEF
} Drive_Num = DEF;

bool stopFlag = true;//set stop flag
bool JogFlag = false;
uint16_t JogTimeCnt = 0;
uint32_t JogTime = 0;
uint8_t motor_update_flag = 0;

IRrecv IR(IR_PIN);  //   IRrecv object  IR get code from IR remoter
decode_results IRresults;

/***************motor control***************/

void go_Advance(void)  {//Forward

  digitalWrite(dir1PinL, HIGH);
  digitalWrite(dir2PinL, LOW);
  digitalWrite(dir1PinR, HIGH);
  digitalWrite(dir2PinR, LOW);
  analogWrite(speedPinL, SPEED);
  analogWrite(speedPinR, SPEED);
}
void go_Left() { //Turn left

  digitalWrite(dir1PinL, HIGH);
  digitalWrite(dir2PinL, LOW);
  digitalWrite(dir1PinR, LOW);
  digitalWrite(dir2PinR, HIGH);
  analogWrite(speedPinL, SPEED);
  analogWrite(speedPinR, SPEED);
}
void go_Right(int t = 0) { //Turn right

  digitalWrite(dir1PinL, LOW);
  digitalWrite(dir2PinL, HIGH);
  digitalWrite(dir1PinR, HIGH);
  digitalWrite(dir2PinR, LOW);
  analogWrite(speedPinL, SPEED);
  analogWrite(speedPinR, SPEED);
}
void go_Back(int t = 0) {//Reverse

  digitalWrite(dir1PinL, LOW);
  digitalWrite(dir2PinL, HIGH);
  digitalWrite(dir1PinR, LOW);
  digitalWrite(dir2PinR, HIGH);
  analogWrite(speedPinL, SPEED);
  analogWrite(speedPinR, SPEED);
}

void stop_Stop()  {  //Stop

  digitalWrite(dir1PinL, LOW);
  digitalWrite(dir2PinL, LOW);
  digitalWrite(dir1PinR, LOW);
  digitalWrite(dir2PinR, LOW);
}

void movement()
{
  delay(DelayTime);
  stop_Stop();
}
/**************detect IR code***************/
void do_IR_Tick()
{
  if (IR.decode(&IRresults))
  {
    if (IRresults.value == IR_ADVANCE)
    {
      go_Advance();
      movement();
    }
    else if (IRresults.value == IR_RIGHT)
    {
      go_Right();
      movement();
    }
    else if (IRresults.value == IR_LEFT)
    {
      go_Left();
      movement();
    }
    else if (IRresults.value == IR_BACK)
    {
      go_Back();
      movement();
    }
    else if (IRresults.value == IR_STOP)
    {
      stop_Stop();
    }
    IRresults.value = 0;
    IR.resume();
  }
}

/**************car control**************/

void setup() {  
   pinMode(MotorDer1, OUTPUT); 
   pinMode(MotorDer2, OUTPUT);
   pinMode(MotorIzq1, OUTPUT);
   pinMode(MotorIzq2, OUTPUT);
   pinMode(PWM_Derecho, OUTPUT);   
   pinMode(PWM_Izquierdo, OUTPUT); 

  pinMode(dir1PinL, OUTPUT);
  pinMode(dir2PinL, OUTPUT);
  pinMode(speedPinL, OUTPUT);
  pinMode(dir1PinR, OUTPUT);
  pinMode(dir2PinR, OUTPUT);
  pinMode(speedPinR, OUTPUT);
  stop_Stop();

  pinMode(IR_PIN, INPUT);
  digitalWrite(IR_PIN, HIGH);
  IR.enableIRIn();
}

void loop()
{
  do_IR_Tick();
}

Tenía errores de tipeo, comentarios mal cerrados y llaves faltantes, doble definición de setup(). Y aunque hubiese compilado los motores nunca te iban a funcionar.
Compara éste con tu código original así ves los errores que tenía y revisa si no hay definiciones de pines repetidas, yo no revisé tanto.

Edito: Sí, definitivamente hay doble definición de pines, tienes que revisar y rearmar todo (es el problema de copiar y pegar diferentes códigos en uno solo).

Hola que tal. Soy nuevo en el foro.

Esta es la segunda consulta que hago en el foro.

Se trata del típico vehículo arduino. Estoy aprendiendo la programación poco a poco, partiendo de la nada.

Bueno, me da un error al compilar, que por lo que entiendo es un error en la sintaxis de declarar los pines de control de los motores como de salida (output).

Le he estado dando vueltas, pero no localizo el error, que se trata de un error general, ya que me lo da para todos los pines declarados. Os adjunto código y mensaje de errores, a ver si me podéis ayudar.

Ah, la placa Arduino es Uno R3.

Gracias por adelantado.

Jesús Romero

Codigo_vehiculo_foro_02.txt (6.26 KB)

error_codigo_foro02.txt (27.2 KB)

Por favor incluye el código como corresponde para que se vea en el post. Gracias

A ver si lo mando bien:
Código

#include <LEANTEC_ControlMotor.h>   //Incluimos la librería control de motores  

// Configuramos los pines que vamos a usar
ControlMotor control(2, 4, 7, 8, 5, 6);
const int MotorDer1 = 2; //El pin 2 de arduino se conecta con el pin In1 del L298N
const int MotorDer2 = 4; //El pin 4 de arduino se conecta con el pin In2 del L298N
const int MotorIzq1 = 7; //El pin 7 de arduino se conecta con el pin In3 del L298N
const int MotorIzq2 = 8; //El pin 8 de arduino se conecta con el pin In4 del L298N
const int PWM_Derecho = 5; //El pin 5 de arduino se conecta con el pin EnA del L298N
const int PWM_Izquierdo = 6; //El pin 6 de arduino se conecta con el pin EnB del L298N
const int velocidad = 150; //Declaramos una variable para guardar la velocidad


void derecha_horario() {
  /*En esta fución la rueda derecha girará en sentido horario*/
  digitalWrite(MotorIzq1, HIGH);
  digitalWrite(MotorIzq2, LOW);
  analogWrite(PWM_Derecho, 200); //Velocidad motor derecho 200
}

void derecha_antihorario() {
  /*En esta fución la rueda derecha girará en sentido antihorario*/
  digitalWrite(MotorDer1, LOW);
  digitalWrite(MotorDer2, HIGH);
  analogWrite(PWM_Derecho, 200); //Velocidad motor derecho 200
}

void izquierda_horario() {
  /*En esta fución la rueda derecha girará en sentido horario*/
  digitalWrite(MotorIzq1, HIGH);
  digitalWrite(MotorIzq2, LOW);
  analogWrite(PWM_Izquierdo, 200); //Velocidad motor izquierdo 200
}

void izquierda_antihorario() {
  /*En esta fución la rueda derecha girará en sentido antihorario*/
  digitalWrite(MotorIzq1, LOW);
  digitalWrite(MotorIzq2, HIGH);
  analogWrite(PWM_Izquierdo, 200); //Velocidad motor izquierdo 200
}

// Añadimos codigo de Mando IR (este codigo está copiado y pendiente de comprobar su funcionamiento)

/*  ___   ___  ___  _   _  ___   ___   ____ ___  ____
   / _ \ /___)/ _ \| | | |/ _ \ / _ \ / ___) _ \|    \
  | |_| |___ | |_| | |_| | |_| | |_| ( (__| |_| | | | |
   \___/(___/ \___/ \__  |\___/ \___(_)____)___/|_|_|_|
                    (____/
   www.osoyoo.com IR remote control smart car
   program tutorial : http://osoyoo.com/2017/04/16/control-smart-car-with-ir/
    Copyright John Yu
*/
#include <IRremote.h>
/*Declare L298N Dual H-Bridge Motor Controller directly since there is not a library to load.*/
//Define L298N Dual H-Bridge Motor Controller Pins
#define dir1PinL  2    //Motor direction
#define dir2PinL  4    //Motor direction
#define speedPinL 6    // Needs to be a PWM pin to be able to control motor speed

#define dir1PinR  7    //Motor direction
#define dir2PinR  8   //Motor direction
#define speedPinR 5    // Needs to be a PWM pin to be able to control motor speed

#define IR_PIN    3 //IR receiver Signal pin connect to Arduino pin 3

// Función que se ejecuta una sola vez al cargar el programa
void setup()
{
  // Se declaran todos los pines como salidas
  // Pines asociados a los motores
  pinMode (In2, OUTPUT);
  pinMode (In4, OUTPUT);
  pinMode (In7, OUTPUT);
  pinMode (In8, OUTPUT);
}
#define IR_ADVANCE       0x2F0     //code from IR controller "▲" button
#define IR_BACK          0xAF0      //code from IR controller "▼" button
#define IR_RIGHT         0x2D0     //code from IR controller ">" button
#define IR_LEFT          0xCD0     //code from IR controller "<" button
#define IR_STOP          0xA70       //code from IR controller "OK" button
#define IR_turnsmallleft 1D0       //code from IR controller "#" button
#define SPEED 180       //speed of car
#define DelayTime 500       //speed of car

enum DN
{
  GO_ADVANCE, //go forward
  GO_LEFT, //left turn
  GO_RIGHT,//right turn
  GO_BACK,//backward
  STOP_STOP,
  DEF
} Drive_Num = DEF;

bool stopFlag = true;//set stop flag
bool JogFlag = false;
uint16_t JogTimeCnt = 0;
uint32_t JogTime = 0;
uint8_t motor_update_flag = 0;

IRrecv IR(IR_PIN);  //   IRrecv object  IR get code from IR remoter
decode_results IRresults;

/***************motor control***************/

void go_Advance(void)  {//Forward

  digitalWrite(dir1PinL, HIGH);
  digitalWrite(dir2PinL, LOW);
  digitalWrite(dir1PinR, HIGH);
  digitalWrite(dir2PinR, LOW);
  analogWrite(speedPinL, SPEED);
  analogWrite(speedPinR, SPEED);
}
void go_Left() { //Turn left

  digitalWrite(dir1PinL, HIGH);
  digitalWrite(dir2PinL, LOW);
  digitalWrite(dir1PinR, LOW);
  digitalWrite(dir2PinR, HIGH);
  analogWrite(speedPinL, SPEED);
  analogWrite(speedPinR, SPEED);
}
void go_Right(int t = 0) { //Turn right

  digitalWrite(dir1PinL, LOW);
  digitalWrite(dir2PinL, HIGH);
  digitalWrite(dir1PinR, HIGH);
  digitalWrite(dir2PinR, LOW);
  analogWrite(speedPinL, SPEED);
  analogWrite(speedPinR, SPEED);
}
void go_Back(int t = 0) {//Reverse

  digitalWrite(dir1PinL, LOW);
  digitalWrite(dir2PinL, HIGH);
  digitalWrite(dir1PinR, LOW);
  digitalWrite(dir2PinR, HIGH);
  analogWrite(speedPinL, SPEED);
  analogWrite(speedPinR, SPEED);
}

void stop_Stop()  {  //Stop

  digitalWrite(dir1PinL, LOW);
  digitalWrite(dir2PinL, LOW);
  digitalWrite(dir1PinR, LOW);
  digitalWrite(dir2PinR, LOW);
}

void movement()
{
  delay(DelayTime);
  stop_Stop();
}
/**************detect IR code***************/
void do_IR_Tick()
{
  if (IR.decode(&IRresults))
  {
    else if (IRresults.value == IR_ADVANCE)
    {
      go_Advance();
      movement();
    }
    else if (IRresults.value == IR_RIGHT)
    {
      go_Right();
      movement();
    }
    else if (IRresults.value == IR_LEFT)
    {
      go_Left();
      movement();
    }
    else if (IRresults.value == IR_BACK)
    {
      go_Back();
      movement();
    }
    else if (IRresults.value == IR_STOP)
    {
      stop_Stop();
    }
    IRresults.value = 0;
    IR.resume();
  }
}

/**************car control**************/

void setup() {
  pinMode(MotorDer1, OUTPUT);
  pinMode(MotorDer2, OUTPUT);
  pinMode(MotorIzq1, OUTPUT);
  pinMode(MotorIzq2, OUTPUT);
  pinMode(PWM_Derecho, OUTPUT);
  pinMode(PWM_Izquierdo, OUTPUT);

  pinMode(dir1PinL, OUTPUT);
  pinMode(dir2PinL, OUTPUT);
  pinMode(speedPinL, OUTPUT);
  pinMode(dir1PinR, OUTPUT);
  pinMode(dir2PinR, OUTPUT);
  pinMode(speedPinR, OUTPUT);
  stop_Stop();

  pinMode(IR_PIN, INPUT);
  digitalWrite(IR_PIN, HIGH);
  IR.enableIRIn();
}

void loop()
{
  do_IR_Tick();
}

Errores

C:\Users\Usuario\Documents\Arduino\Robot_coche_18\Robot_coche_18.ino: In function 'void setup()':

Robot_coche_18:71:12: error: 'In2' was not declared in this scope

   pinMode (In2, OUTPUT);

            ^~~

Robot_coche_18:72:12: error: 'In4' was not declared in this scope

   pinMode (In4, OUTPUT);

            ^~~

Robot_coche_18:73:12: error: 'In7' was not declared in this scope

   pinMode (In7, OUTPUT);

            ^~~

Robot_coche_18:74:12: error: 'In8' was not declared in this scope

   pinMode (In8, OUTPUT);

            ^~~

C:\Users\Usuario\Documents\Arduino\Robot_coche_18\Robot_coche_18.ino: In function 'void do_IR_Tick()':

Robot_coche_18:161:5: error: expected '}' before 'else'

     else if (IRresults.value == IR_ADVANCE)

     ^~~~

C:\Users\Usuario\Documents\Arduino\Robot_coche_18\Robot_coche_18.ino: At global scope:

Robot_coche_18:188:1: error: expected declaration before '}' token

 }

 ^

Utilizando biblioteca LEANTEC_ControlMotor en carpeta: C:\Users\Usuario\Documents\Arduino\libraries\LEANTEC_ControlMotor (legacy)

Usando librería IRremote con versión 2.0.1 en la carpeta: C:\Users\Usuario\Documents\Arduino\libraries\IRremote 

exit status 1

'In2' was not declared in this scope

Gracias a todos

Jesús Romero

Espera... Ya habíamos hablado sobre éste código y no tenía errores luego que te lo corregí.
¿Qué fue lo que modificaste?

Yo no se a ti pero a mi el tiempo no me sobra, me tomé el trabajo de corregirte los errores que tenías, te puse el código nuevo pero veo que vuelves con el código viejo. ¿Y para qué te ayudé?
Yo hasta acá llego, si alguien mas quiere perder el tiempo contigo que lo haga.

Por otro lado, como claramente lo dice en las reglas del foro, si ya abriste un hilo sobre este tema, sigue con el mismo, no abras otro (como lo has hecho ahora), sino solo se presta a confusión.

Disculpa. No sabía eso sobre las reglas del foro.

Me seguía dando errores. Lo enviaré todo tal y como pasó. Es que ahora el error que me da es el tema de los pines.

En fín, mañana lo cuelgo con los errores que me daba y espero que lo mires.

Saludos

Jesús Romero.

Moderador:
Un doble posteo es una de las peores faltas en este foro.
La razón es que alguien que te responda en tu otro hilo (yo ya lo hice) se tomará el tiempo de darte una buena respuesta sin saber lo que se ha escrito en el otro sitio. Lo que consituye una perdida de tiempo para ambos foreros.
Por respeto a ellos es que te pido que no lo vuelvas a hacer y que leas las normas.
Normalmente te sancionaría con un dia de baneo. Lo dejo en suspenso. Veo que en ambas oportunidades de pidieron que postearas adecuadamente y no lo hiciste. No tienes mas advertencias.
Respuestas a este tema por privado.

Normas del foro

Tus errores tienen que ver con cosas que no usas.
IN1 e IN2 no estan definidas, en tu primer código y el corregido por gatul IN1 e IN2 no existen, de modo que los pusiste tu y si los pusiste tu, sabras a que pines corresponde.
Faltan #define IN2 algo y lo mismo con IN7 e IN8

No es tan dificil de resolver.
Lee lo que dice y aunque no lo entiendas, copias y pegas al google translate y el sentido común te dirá...

In2' was not declared in this scope

no esta declarado....

Si no esta declarado solo debes declararlo como te he indicado

#define In2 3  // por ejemplo, que sea el pin que corresponda

NOTA: como verás aunque sea una línea va con etiquetas. Que no se te olvide!!

Hi,
Aqui el problema esta que el usa el In2 que esta explicando donde van los pines pero en realidad el necesita usar la definicion de la variable MotorDer1 en vez de In2.Como ven adjunto la variable esta definida como MotorDer1. Esta usando las definiciones incorectamente.Cambialas a MotorDer o cambialas a In1 etc..

int MotorDer1=2; //El pin 2 de arduino se conecta con el pin In1 del L298N

Hola a todos.
Vuelvo a consultaros sobre mi proyecto de vehiculo robot (a ver si lo veo ya circulando y dirigiéndolo).
Bueno, he puesto sin tocar el codigo corregido de ‘Gatul’
He corregido la declaración de Pines de salida en el codigo del mando tal y como observó ‘Tauro0221’.
En fin en principio parece que bien, pero…tengo problemas con el codigo del mando.
Con un programa para decodificar el mando a distancia, de Marca SONY, pues me salen codigos de tecla con tres caracteres, por ejemplo 2F0 para Advance. Bueno lo pongo tal y como sale en Serial Print:

(12 (12 bits)Decoded SONY: 2F0 (HEX) , 1011110000 (BIN)
(0 bits)FFFFFFFF (HEX) , 11111111111111111111111111111111 (BIN)

Os envio el archivo.ino, ya que me dice al subir el post que sobrepaso los caracteres.
Y os pongo los errores, si le pongo 0x (que lo he visto en algun lado) antes del código, no me da errores pero no funciona el vehículo.

Robot_coche_20:72:26: error: unable to find numeric literal operator 'operator""F0'

 #define IR_ADVANCE       2F0     //code from IR controller "▲" button

                          ^

C:\Users\Usuario\Documents\Arduino\Robot_coche_20\Robot_coche_20.ino:157:28: note: in expansion of macro 'IR_ADVANCE'

     if (IRresults.value == IR_ADVANCE)

                            ^~~~~~~~~~

Robot_coche_20:74:26: error: 'CD0' was not declared in this scope

 #define IR_RIGHT         CD0     //code from IR controller ">" button

                          ^

C:\Users\Usuario\Documents\Arduino\Robot_coche_20\Robot_coche_20.ino:162:33: note: in expansion of macro 'IR_RIGHT'

     else if (IRresults.value == IR_RIGHT)

                                 ^~~~~~~~

C:\Users\Usuario\Documents\Arduino\Robot_coche_20\Robot_coche_20.ino:74:26: note: suggested alternative: 'DD0'

 #define IR_RIGHT         CD0     //code from IR controller ">" button

                          ^

C:\Users\Usuario\Documents\Arduino\Robot_coche_20\Robot_coche_20.ino:162:33: note: in expansion of macro 'IR_RIGHT'

     else if (IRresults.value == IR_RIGHT)

                                 ^~~~~~~~

Robot_coche_20:75:26: error: unable to find numeric literal operator 'operator""D0'

 #define IR_LEFT          2D0     //code from IR controller "<" button

                          ^

C:\Users\Usuario\Documents\Arduino\Robot_coche_20\Robot_coche_20.ino:167:33: note: in expansion of macro 'IR_LEFT'

     else if (IRresults.value == IR_LEFT)

Robot_coche_20.zip (1.9 KB)

Por defecto los números son decimales, tienes que poner "0x" delante para aclarar que el número es hexadecimal sino lo toma como decimal o va a dar error (como te sucede porque los números decimales no contienen letras en sus dígitos).

Gracias, pero aún así el vehículo no funciona. La compilación poniendo "0x" va perfecta, pero lo dicho, el vehículo no funciona.

Gracias por vuestra ayuda por adelantado.

Jesús Romero

El vehículo no funciona.
El problema es que tienes grandes dudas en cuanto a programación y comienzas con un código demasiado grande en lugar de hacerlo por etapas cortas y probadas.

Toma tu código, olvida la parte IR y prueba el motor, avanza, retrocede, izquierda, derecha.
Esta resuelto, OK

Paso 2. Toma la parte IR. La pruebas, ves si un comando es reconocido y le pones Avance en el Serial.print
Otro para los demas comandos.
Resuelto? Si, perfecto, ya tienes el paso 2 listo.

Paso 3, unes 1 y 2 y tienes todo listo.

Lo digo fácil pero asi se trabaja.
No todo junto con miles de dudas como tienes.

No lo tomes a mal, estoy intentando ayudarte. No abarques mas de lo que puedes manejar en esta etapa de tu manejo de Arduino. Ve sintiéndote cómodo con las cosas, y lo más importante, entendíendolas!!

Muchas gracias. Ya lo habia pensado, pero es un proyecto bonito para empezar. Y lo que le queda. Programar los encoders, sensores de obtaculos, cámara con servo... En fin todas esas cosas pretendo ponerle.

Bueno, voy a ver si le pongo órdenes para probar si funciona, quitando la parte del mando. Ya os contaré.

Lo tuyo es querer largarte a caminar sin primero aprender a gatear. :grin: