Ajuda na programação de um robô utilizando motor shield e 4 motores

Estou trabalhando em um projeto e to com dificuldade , peço ajuda a quem souber resolver. Estou usando um arduíno Uno e um motor shield igual o esse AdafruitMotorShield, estou com 4 rodas ligadas no shield e estou controlando com controle remoto com receptor infravermelho e controlinho simples, estou com 4 rodas ligadas no shield porém só o M3 e o M4 do shield funcionam, o M1 e o M2 não funcionam com o código utilizando o controle remoto. Já fiz um programa sem o controle remoto e as quatro funcionaram. Alguém sabe o erro ou alguma ligação que estou fazendo errado?
Segue o programa que estou com problemas.
#include
#include

int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);

AF_DCMotor motor1(1, MOTOR12_64KHZ);
AF_DCMotor motor2(2, MOTOR12_64KHZ);
AF_DCMotor motor3(3, MOTOR12_64KHZ);
AF_DCMotor motor4(4, MOTOR12_64KHZ);

decode_results results;

void setup() {

motor1.setSpeed(255);
motor2.setSpeed(255);
motor3.setSpeed(255);
motor4.setSpeed(255);
irrecv.enableIRIn();

}

void loop() {
if (irrecv.decode(&results)) {
if(results.value == 16724175){ // botão 1 do controle
motor1.run(FORWARD);
motor2.run(FORWARD);
motor3.run(FORWARD) ;
motor4.run(FORWARD);

}
if(results.value == 16718055){ //botão 2 do controle
motor1.run(BACKWARD);
motor2.run(BACKWARD);
motor3.run(BACKWARD) ;
motor4.run(BACKWARD);

}
if(results.value == 16743045){ //botão 3 do controle
motor1.run(FORWARD);
motor2.run(FORWARD);
motor3.run(RELEASE) ;
motor4.run(RELEASE);

}
if(results.value == 16716015){ //botão 4 do controle
motor1.run(RELEASE);
motor2.run(RELEASE);
motor3.run(FORWARD) ;
motor4.run(FORWARD);

}
irrecv.resume();
}
delay(2000);
motor1.run(RELEASE);
motor2.run(RELEASE);
motor3.run(RELEASE) ;
motor4.run(RELEASE);

}

#include 
#include 


int RECV_PIN = 2; 
IRrecv irrecv(RECV_PIN); 

AF_DCMotor motor1(1, MOTOR12_64KHZ); 
AF_DCMotor motor2(2, MOTOR12_64KHZ);
AF_DCMotor motor3(3, MOTOR12_64KHZ); 
AF_DCMotor motor4(4, MOTOR12_64KHZ); 

decode_results results; 

void setup() {

motor1.setSpeed(255); 
motor2.setSpeed(255);
motor3.setSpeed(255);
motor4.setSpeed(255);
irrecv.enableIRIn();

}

void loop() { 
if (irrecv.decode(&results)) { 
Serial.print ("cmd");
Serial.print (results.value);

if(results.value == 16724175){ // botão 1 do controle 
motor1.run(FORWARD); 
motor2.run(FORWARD);
motor3.run(FORWARD) ;
motor4.run(FORWARD); 

} 
if(results.value == 16718055){ //botão 2 do controle 
motor1.run(BACKWARD); 
motor2.run(BACKWARD);
motor3.run(BACKWARD) ;
motor4.run(BACKWARD); 


} 
if(results.value == 16743045){ //botão 3 do controle
motor1.run(FORWARD); 
motor2.run(FORWARD);
motor3.run(RELEASE) ;
motor4.run(RELEASE);

} 
if(results.value == 16716015){ //botão 4 do controle
motor1.run(RELEASE); 
motor2.run(RELEASE);
motor3.run(FORWARD) ;
motor4.run(FORWARD);

} 
irrecv.resume(); 
} 
delay(2000); 
motor1.run(RELEASE); 
motor2.run(RELEASE);
motor3.run(RELEASE) ;
motor4.run(RELEASE);

}

O que aparece quando corres este código e carregas em todos os botões?

Não aparece nada na porta serial , usei este código sem controle remoto e funcionou os 4 motores.
#include <AFMotor.h>
#include <Servo.h>
#define SERVO1_PWM 10
Servo servo_1;
AF_DCMotor motorDirTras(1, MOTOR12_64KHZ);
AF_DCMotor motorDirFront(2, MOTOR12_64KHZ);
AF_DCMotor motorEsqFront(3, MOTOR12_64KHZ);
AF_DCMotor motorEsqTras(4, MOTOR12_64KHZ);
int IRpin = 1;

void setup() {
Serial.begin(9600);
Serial.println(“Motor test!”);
servo_1.attach(SERVO1_PWM);
}

void loop() {
servo_1.write(30);
delay(1000);
servo_1.write(120);
delay(2000);
motorDirTras.setSpeed(150);
motorDirFront.setSpeed(150);
motorEsqFront.setSpeed(150);
motorEsqTras.setSpeed(150);
float volts = analogRead(IRpin)0.0048828125;
float distance = 65
pow(volts, -1.10);
Serial.println(distance);

if (distance > 30){
motorDirTras.run(FORWARD);
motorDirFront.run(FORWARD);
motorEsqFront.run(FORWARD) ;
motorEsqTras.run(FORWARD);
}

if (distance <= 30){
motorDirTras.setSpeed(255);
motorDirFront.setSpeed(255);
motorEsqFront.setSpeed(255) ;
motorEsqTras.setSpeed(255);
Serial.println(“Obstaculo encontrado, virando a esquerda”);

motorDirTras.run(RELEASE);
motorDirFront.run(RELEASE);
motorEsqFront.run(RELEASE) ;
motorEsqTras.run(RELEASE);
motorDirTras.run(FORWARD);
motorDirFront.run(FORWARD);
motorEsqFront.run(BACKWARD) ;
motorEsqTras.run(BACKWARD);
delay(1000);
}
delay(500);
}

Quando coloquei com o controle remoto funcionou só o motor 3 e o motor 4

Desculpa lá… mas se pretendes ajuda tens de decidir o que pretendes fazer e o que usar.

Mostras um código e dizes que não funciona com o comando IR mas funciona sem o comando. Depois mostras um programa que não tem nada a ver com o primeiro e dizes que foi esse que usaste.

Assim não se sai do sítio. Como é que eu posso saber se a biblioteca do primeiro código para controlar os motores está correcta se não a testaste?

Experimenta este programa para testar o IR:

#include <IRremote.h>

const int RECV_PIN = 2;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
  irrecv.blink13(true);
}

void loop() {
  if (irrecv.decode(&results)) {
    if (results.decode_type == NEC) {
      Serial.print("NEC: ");
    } else if (results.decode_type == SONY) {
      Serial.print("SONY: ");
    } else if (results.decode_type == RC5) {
      Serial.print("RC5: ");
    } else if (results.decode_type == RC6) {
      Serial.print("RC6: ");
    } else if (results.decode_type == UNKNOWN) {
      Serial.print("UNKNOWN: ");
    }
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
}

Ao carregar nos botões, deves receber o que o comando te está a enviar. Toma nota dos valores que aparecem no serial port para cada tecla.