Proyecto de luces de navegacion de avion con ir

Hola bueno necesito una mano con mi proyecto de led´s de navegacion para mi avion RC. Tengo un problema a la hora de apagar la luz baliza y strobo con el mando de infrarrojo. Tal vez tenga un fallo tipico de estudiante pero la verdad es que no se que hacer, he probado con varias maneras pero no funciona. Cuando se le da al boton de encender por ejemplo el strobo comienza a funcionar, pero cuando presiono el boton para apagar ese led strobo no hace nada, El recepto recibe la orden pero no hace nada. Le mando el codigo.

#include <IRremote.h>
int IR = 11;
int led = 2;
IRrecv irrecv (IR);
decode_results codigo;

void setup() 
{
 Serial.begin(9600);
 irrecv.enableIRIn();
 pinMode(led, OUTPUT);
}

void loop() 
{
if (irrecv.decode(&codigo))
{ 
Serial.println(codigo.value, HEX);

 if (codigo.value==0XFFE11E)
{
 digitalWrite(led, HIGH);    
 delay(40);                       
 digitalWrite(led, LOW);    
 delay(100);                       
 digitalWrite(led, HIGH);    
 delay(40);                       
 digitalWrite(led, LOW);    
 delay(1000);


if (codigo.value == 0XFF619E)
{
 digitalWrite(led, LOW);


delay(500);
irrecv.resume();
}
}
}
}

Les pongo una imagen simplificada del proyecto

Espero que me puedan ayudar. Gracias

No conozco las instrucciones de irrecv, pero me atrevo ha decir que:

No cierras "}" los if donde tendrías que cerrarlos.

void loop() 
{
 if (irrecv.decode(&codigo))
{ 
Serial.println(codigo.value, HEX);

  if (codigo.value==0XFFE11E)
{
  digitalWrite(led, HIGH);    
  delay(40);                       
  digitalWrite(led, LOW);    
  delay(100);                       
  digitalWrite(led, HIGH);    
  delay(40);                       
  digitalWrite(led, LOW);    
  delay(1000);

}

 if (codigo.value == 0XFF619E)
 {
  digitalWrite(led, LOW);
 
}
 delay(500);

---> esto no se para que es por lo que tampoco se si esta bien situado. irrecv.resume();


}
}

prueba cerrando con "break;" despues de cada vez que le das una orden

 if (codigo.value==0XFFE11E)
{
  digitalWrite(led, HIGH);    
  delay(40);                       
  digitalWrite(led, LOW);    
  delay(100);                       
  digitalWrite(led, HIGH);    
  delay(40);                       
  digitalWrite(led, LOW);    
  
break;

delay(1000);


 if (codigo.value == 0XFF619E)
 {
  digitalWrite(led, LOW);
 break;

 delay(500);

Hola buenas a todos y gracias por contestar.
Mikms he probado tu codigo y me dice los siguiente: "break statement not within loop or switch" pero sin las comillas. Y no carga el sketch obviamente.

Por tu parte jordi3sk97 te dire que por lo que se la instruccion irrrev.resume es como un "antirebote" por asi decirlo. Funciona igual con eso que sin eso pero me aconsejaron poner para intentar solucionar el problema..... No se. Se os ocurre otra opcion? aunque sea con otras instrucciones mas elaboradas?

Si no tendre que recurrir de la electronica de antaño y eso dificil no es pero mas engorrosa si que es, sobre todo para hacer el `rpyecto completo, porque eso solo es una parte.

En mi respuesta anterior.

1 - Mencionaba una duda.
2 - Te decía

No cierras "}" los if donde tendrías que cerrarlos.

3 - adjuntaba el código modificado.

En tu respuesta solo mencionas el punto (1) la duda

Te has dignado a probar el código ?

Ok.... yo no lo he probado en placa pero creo que asi te debe funcionar. Compruebalo y ya nos dices.
Ten en cuenta que a mas "delay" mas complicado va a ser que tengas respuesta instantanea al pulsar cualquier boton mientras esté dentro de esa ejecucion.

#include <IRremote.h>
int IR = 11;
int led = 2;
IRrecv irrecv (IR);
decode_results codigo;

void setup() 
{
 Serial.begin(9600);
 irrecv.enableIRIn();
 pinMode(led, OUTPUT);
}

void loop() 
{
if (irrecv.decode(&codigo))
{
Serial.println(codigo.value, HEX);
switch (codigo.value)
{
 case 0XFFE11E: //codigo 
 digitalWrite(led, HIGH);    
 delay(40);                       
 digitalWrite(led, LOW);    
 delay(100);                       
 digitalWrite(led, HIGH);    
 delay(40);                       
 digitalWrite(led, LOW);    
 delay(1000);
 break; 
 

case 0XFF619E: //codigo2
digitalWrite(led, LOW);
delay(500);
 break; 
}
irrecv.resume();
}
}

Hola buenas, lo primero perdon por no haber respondido antes pero bueno tengo vida. Que voy a decir.
bueno aa lo que vamos.

A jordi3sk97 si he tenido la dignidad e probar su trabajo, pero ho hace absolutamente nada, el IR detecta el pulso del mando los e porque uso un modulo ir y lleva un led, pero el arduino no hace nada de nada.

Respecto a la modificacion de Mikms lo que hace es hacer el doble flash que le tengo puesto en el sketch cuando presiono el boton programado pero solo lo hace una sola vez y se apaga. O sea que responde indefinidamente al boton del mando de encender el led pero no hace un loop sino que hace doble "flash" y se apaga hasta que pulse de nuevo el boton. No se si me llego a explicar.

Tal vez me haya explado yo mal desde un principio y ustedes esten mandandome algo que funcione pero que no es lo que busco. Les voy a explicar de manera que creo que puedan entenderme. Yo quiero que al presionara una tecla del mando comience a flashear el led y con otra tecla diferente se apague el led hasta nueva orden, quiero un interruptor controlado por ir. Simple y llanamente.