Coche rc solo funciona un motor

Saludos a la comunidad:
Estoy construyendo un cochecito con dos motores dc una placa arduino leonardo y controlado por un sensor ir y un mando a distancia. El hardware esta comprobado que funciona y que las conexiones están bien hechas. El problema viene a la hora de ejecutar el código que tengo para el coche. Es un código básico de prueba . un boton mueve adelante los dos motores, otro hacia atras. Solo se mueve un motor. El código es muy simple, y prácticamente es un calco de uno de los ejemplos. Por mas que lo reviso no encuentro el motivo por el que no funciona. Si alguien puede aportar algo, se agradecedira

#include <IRremote.h>
int IN3 = 7;    // Input3 conectada al pin 7
int IN4 = 4;    // Input4 conectada al pin 4 
int ENB = 6;    // ENB conectada al pin 6 de Arduino
int IN1= 8; // Input 1 conectada al pin 8
int IN2 = 9;    // Input2 conectada al pin 9
int ENA = 10;    // ENB conectada al pin 10 de Arduino
int RECEIVE_PIN= 2;
IRrecv irreceiver(RECEIVE_PIN);
decode_results results;

//Se declara una variable volátil que cambiará de estado en el
//módulo de la interrupción y se utilizará fuera.
//Si la variable no se utilizase fuera del módulo de la interrupción
//no sería necesario crearla de tipo volátil.
volatile int estado_actual = 0;

//Se crea la función que se ejecutará cada vez que se active la
//interrupción. Esta función es de tipo void (por lo que no devuelve
//ningún valor) y no tiene parámetros de entrada.
void fun_cambio_estado()
{
  //Se cambia al estado contrario al actual, es decir, de LOW se pasa
  //a HIGH y de HIGH a LOW.
 if (irreceiver.decode(&results)) {
    
    estado_actual=(results.value);
    Serial.println(estado_actual, HEX); 
    irreceiver.resume(); // Recibe el siguiente valor
  }
}
void setup()
{
  //Se declara el pin digital correspondiente al LED como salida.
 pinMode (ENB, OUTPUT); 
 pinMode (IN3, OUTPUT);
 pinMode (IN4, OUTPUT);
 pinMode (ENA, OUTPUT); 
 pinMode (IN1, OUTPUT);
 pinMode (IN2, OUTPUT);
 pinMode (2, INPUT);
Serial.begin(9600);
irreceiver.enableIRIn(); // Start the receiver
  //Se determina la interrupción 0 (por lo que el pin asociado al receptor Ir
  //será el 3 en caso de tratarse de un Arduino LEONARDO) a la que se
  //le asocia la función fun_cambio_estado que se activará al presionar el
  //pulsador (por tratarse del modo change).
  attachInterrupt(1, fun_cambio_estado, FALLING);
  
}

void loop()
{
  //Se comprueba la tecla del mando
 switch (estado_actual)
       {
            case 0x61D6D827: //codigo boton adelante
            
            digitalWrite (IN3, HIGH);
            digitalWrite (IN4, LOW);
            digitalWrite (IN2, HIGH);
            digitalWrite (IN1, LOW);
  // Aplicamos PWM al pin ENB, haciendo girar el motor, cada 2 seg aumenta la velocidad
   
            analogWrite(ENB,105);  
            analogWrite(ENA,105);  
            Serial.println(estado_actual, HEX);         
            break;

            case 0x61D620DF: //codigo boton izquierda
            
            analogWrite(ENB,0);
            analogWrite(ENA,0);               
            break;
            
            case 0x61D6609F: //codigo boton derecha
           
            digitalWrite (IN3, LOW);
            digitalWrite (IN4, HIGH);
            digitalWrite (IN2, LOW);
            digitalWrite (IN1, HIGH); 
            analogWrite(ENB,125);
            analogWrite(ENA,125);                  
            break;
            
            case 0x61D658A7: //codigo boton atras
            digitalWrite (IN3, LOW);
            digitalWrite (IN4, HIGH);
            
            analogWrite(ENB,125);
                             
            break;                
            break;

            
       }
   
}