Selección de programas con Keypad

Hola, perdonar, me he leído las normas del foro y rectifico.
Era la primera vez que escribo en este foro.
Partiendo de un Keypad quiero que al pulsar una tecla (por ejemplo 1) se encienda un led y al pulsar otro(ejemplo 2) que se encienda el otro. Hasta aquí no hay problema. Es la parte del código mostrada abajo. El problema es cuando quiero hacer que sea una intermitencia, que tiene que durar hasta que se cambia de programa. He probado con bucles WHILE, pero estos solo he encontrado ejemplos que funcionan con contadores a una variable tipo ++.

void setup(){
 Serial.begin(9600);
  
  //Declaración de Outputs de los Grupos
  pinMode(AZUL,OUTPUT);
  pinMode(ROJO,OUTPUT);
}
  //LISTA DE PROGRAMAS
  void Limpiar()    //Apagaremos todos los LEDS 
{ 
  digitalWrite (AZUL,0);
  digitalWrite (ROJO,0);

}  
  void Programa1 ()// Encenderemos LED1
{ 
  digitalWrite(AZUL,1);
  
}
void Programa2 ()//Encenderemos LED2
{
 
 digitalWrite (ROJO,1);
}

void loop() 
{  
  pulsacion = Teclado1.getKey() ;  // Lee la tecla pulsada
  if  (pulsacion){
  switch (pulsacion){
    
    case '1':
    Limpiar();
    Programa1 ();
    break;
    
     case '2':
    Limpiar();
    Programa2 ();
    break;
  }
  }
}

SOLUCIONADO

La solución está en hacer los los en los Case haciendo que se repita con una condición imposible, a esta Variable le he llamado Murray (Guiño a "Atrapado en el tiempo")
Para salir le hago leer una variable que la tomo de la pulsacóin del Keypad, hace el BRAKE;
Lo intercalarlo en medio del código de la rutina.

void Programa2 ()                    //Multiintermitencia de los 2 leds
{
  do{
 digitalWrite (ROJO,1);
 pulsacion = Teclado1.getKey() ;//bloque de lectura y BREAK
 PGR=(pulsacion);
 if (!PGR==0)break;
 delay(200);
 digitalWrite (AZUL,1);
 pulsacion = Teclado1.getKey() ;//bloque de lectura y BREAK
 PGR=(pulsacion);
 if (!PGR==0)break;
 delay(200);
 digitalWrite (AZUL,0);
 pulsacion = Teclado1.getKey() ;//bloque de lectura y BREAK
 PGR=(pulsacion);
 if (!PGR==0)break;
 delay(200);
 digitalWrite (ROJO,0);
 pulsacion = Teclado1.getKey() ;//bloque de lectura y BREAK
 PGR=(pulsacion);
 if (!PGR==0)break;
 delay(200);
              }while(Murray==1);
      }