Problema con Receptor ir que deja de funcionar despues de un rato

Hola que tal todos, espero que me puedan ayudar con un proyecto de un carro a control remoto usando un receptor ir, sucede que funciona por un momento y luego deja de "recibir" y no responde, hasta que no le de reset a la placa. uso el monitor serie para "ver" los mensajes y me doy cuenta que deja de recibir porque: 1:no hace nada. 2:el led del modulo receptor ir no se enciende como deberia hacerlo.
adjunto codigo e imagen del receptor ir que utilizo. Nota: solo tengo conecta 1 de los 2 motores y están comentados.

//Testeando Motores con L293D
//Definimos pins
//Motor A
#include <IRremote.h>
int pin=5;
IRrecv irrecv(pin);
decode_results results;


int motorA1 = 10;
int motorA2 = 11;
//Motor B

int MotorB1 = 8;
int MotorB2 = 9;
char val;


void setup() {
  
  Serial.begin (9600);
  Serial.println("IR Receiver Button Decode"); 
  irrecv.enableIRIn();
  //configuración
  
 // pinMode (motorA1, OUTPUT);
  //pinMode (motorA2, OUTPUT);  
  
  
  pinMode (MotorB1, OUTPUT);
  pinMode (MotorB2, OUTPUT);  

  
 
}
void loop()
{
 
  if (irrecv.decode(&results))
  {  Serial.println(results.value, HEX);
    
    switch(results.value)
    {
      case 0xFF906F:  Serial.println("Forward"); // Button 2  
                         detener();
                         adelante();
                         break;
                         
    case 0xFFE01F:  Serial.println("down"); // Button 2  
                         detener();
                         atras();
                         break;

    case 0xFFE21D:  //Serial.println("down"); // Button 2  
                         Serial.println ("stop");
                         detener();
                         break;
    }                                       
       irrecv.resume();
    }//fin if   
  
}
void adelante()
{
           //digitalWrite (motorA1, LOW);
          // digitalWrite (motorA2, HIGH);
           digitalWrite (MotorB1, LOW);
           digitalWrite (MotorB2, HIGH);
           delay(100);
           
}
void atras()
{
         //  digitalWrite (motorA1, HIGH);
           //digitalWrite (motorA2, LOW);
           digitalWrite (MotorB1, HIGH);
           digitalWrite (MotorB2, LOW);
           delay(100);
}
void detener()
{
digitalWrite (MotorB1,HIGH);
digitalWrite (MotorB2, HIGH);
}

mod.PNG