Luces y control Remoto

Buenas Noches

Tengo un problema con el codigo de las luces controlado con la tecla 1 del control remoto, cuando comienza el programa todo esta bien, pero cuando quiero que nuevamente comience el programa no me responde el boton 1.

Por favor necesito ayuda

Gracias, Aqui esta el codigo:

#include <IRremote.h>
int RECV_PIN = 10; // IR Receptor - Arduino Pin Numero 10
IRrecv irrecv(RECV_PIN);
decode_results results;
int LED1 = 1;
int LED2 = 2;
int LED3 = 3;
int LED4 = 4;
int s = 0;

void setup()
{
 Serial.begin(9600);
 irrecv.enableIRIn(); // Inicializa el Receptor
 pinMode(LED1, OUTPUT);
 pinMode(LED2, OUTPUT);
 pinMode(LED3, OUTPUT);
 pinMode(LED4, OUTPUT);  
 
}

void loop() 
{ 
 if (irrecv.decode(&results)) 
 {   
   if (results.value == 0xFF6897) // Boton 1
   { 
    while(s < 5)
       {
       digitalWrite(LED1, HIGH);
       delay(200);
       digitalWrite(LED2, HIGH);
       delay(200);
       digitalWrite(LED3, HIGH); 
       delay(200);
       digitalWrite(LED4, HIGH); 
       delay(200);
       digitalWrite(LED1, LOW); 
       digitalWrite(LED2, LOW); 
       digitalWrite(LED3, LOW); 
       digitalWrite(LED4, LOW); 
       delay(100);
       s++;
       }
    }
   irrecv.resume(); // Recibe el proximo valor
 }
 delay(100);
}

Tienes un problema con las normas del foro que no has leído y por eso has posteado un código sin la etiqueta (</>) correspondiente.
Ve a More, luego Modify y estarás en modo edición.
Selecciona todo el código y dale click a </> y ya esta y se verá correctamente.
Por favor lee las normas pq hay otras cuestiones para enlaces, imagenes, lenguaje, y hilos viejos a tener en cuenta y respetar en todo momento.

Respondo: tienes el tipico problema del uso de delay.
Cuando usas delay Arduino no hará nada hasta completar la instrucción.
En tu código dice

 while(s < 5)
        {
        digitalWrite(LED1, HIGH);
        delay(200);
        digitalWrite(LED2, HIGH);
        delay(200);
        digitalWrite(LED3, HIGH); 
        delay(200);
        digitalWrite(LED4, HIGH); 
        delay(200);
        digitalWrite(LED1, LOW); 
        digitalWrite(LED2, LOW); 
        digitalWrite(LED3, LOW); 
        digitalWrite(LED4, LOW); 
        delay(100);
        s++;
        }

900 mseg x 5 veces = 4500 mseg o 4.5 seg en los que no responderá.
La solución es usar millis().
Mira el ejemplo blinkwithoutdelay.ino del IDE y ademas ve a Documentación y lee sobre máquinas de estado y al final leeras un comentario mío donde convierto un caso como este en un caso en el que ya no existe la demora de 4.5seg.
Igualmente tu programa requeire cambios porque tu envias ha que ejecute esa secuencia de LEDs por ese tiempo y no vuelves a consultar el IR hasta completada.
Usar millis() tal como esta tu código no va a cambiar nada.

Gracias entendi lo de los millis(), lo que no entiendo es lo que me mencionas, como vuelvo a consultar el IR hasta completada.

Muchas Gracias

Digo que si usas delay x 4.5 segundos no podras responder a nada hasta que se termine tu secuencia.
Hay que programarlo de otro modo. millis() es una alternativa.
Usar millis no es un reemplazo directo de delay. Requiere un cambio en como piensas todo.
A eso me refería con los cambios.