Porqué se detiene mi bucle ?

Hola! Estoy comenzando en el mundo de Arduino y utilizo como guía un manual que encontré en internet:

https://www.google.com.mx/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0ahUKEwii1Nqy6uHJAhWK1B4KHbNZDdoQFgghMAE&url=http%3A%2F%2Fwww.tiendaderobotica.com%2Fdownload%2FLibro_kit_Basico.pdf&usg=AFQjCNHX9ShSBWMdiNEUEHF6y15evcR41A&sig2=oOKvoKWY25qjmSqd2yTDgQ

En una de las prácticas hay que realizar lo siguiente:

Avisos luminosos S.A. te ha contratado para que realices un programa
que tiene la característica de recibir datos, porque la idea es que el
aviso de luces se ubique en el piso 130 del Edificio Bulli y tu lo puedas
controlar desde el piso 1, así que por cada letra que le escribas por
teclado a la Consola serial el programa debe hacer determinada rutina
con tres LEDs, si le escribes:
-Letra A: Prende los tres LED
-Letra B: Prende el LED1 por un segundo y lo apaga, luego prende el LED2 por un segun-
do y lo apaga y finalmente prende el LED3 por un segundo y lo apaga, y vuelve
a comenzar. Esta rutina genera una sensación de movimiento.
-Letra C: Apaga los tres LED.

La instrucción A y C funcionan bien, pero en la instrucción B, el bucle for sólo se realiza una vez y tengo que ingresarla para que vuelva a comenzar. Por lo que entiendo no corre infinitamente, por la la condicional if, me exige ingresar forsozamente la instrucción B. Y aquí es donde no sé como modificar esa condicional para que ya no me la pida.

Ojalá alguien me pueda orientar un poco. gracias!

Les dejó el sketch para mas información:

/*·················
 ·ANUNCIO LUMINOSO·
 ··················
 */
//··························
//·Declaración de variables·
//··························
int ledr = 2; //Pin 2, asignado al led rojo
int leda = 3; //Pin3, asignado al led amarillo
int ledv = 4; //Pin 4, asignado al led verde
int n = 0;
char instruccion; //Variable donde se almacenara la instrucción "A" 
boolean prendido=false; //Estado apagado del led al inicio
//···················
//·Función principal·
//···················
void setup() // Se ejecuta una sola vez cada que Arduino se inicia
{
Serial.begin(9600); //Inicia comunicación serial
pinMode(ledr,OUTPUT); //Se configuran los 3 leds como salida 
pinMode(leda,OUTPUT);
pinMode(ledv,OUTPUT);
pinMode(n,OUTPUT);
}
//·················
//·Función cíclica·
//·················
void loop() // Se ejecuta repetidamente mientras Arduino este conectado 
{
instruccion=Serial.read(); //Variable donde se guarda el valor de la terminal serial
if((instruccion=='A') && (prendido==false)) //Se teclea la "a" y además el led esta apagado
{
digitalWrite(ledr,HIGH); //Enciende el led rojo
prendido=true;  //Actualiza el estado del led rojo
digitalWrite(leda,HIGH); //Enciende el led amarillo
prendido=true;  //Actualiza el estado del led amarillo
digitalWrite(ledv,HIGH); //Enciende el led verde
prendido=true;  //Actualiza el estado del led verde
}
else if((instruccion=='B') && (prendido==false)) //Se teclea la "B" y además el led esta apagado
{
instruccion=Serial.read(); //Variable donde se guarda el valor de la terminal serial  
for(n=2;n<=4;n++)
{
digitalWrite(n,HIGH); //Enciende el led rojo
prendido=true;  //Actualiza el estado del led rojo
delay(1000); //Espera un segundo
digitalWrite(n,LOW); //Apaga el led rojo
prendido=false; //Actualiza el estado del Led rojo
delay(1000); //Espera un segundo
}
}
else if((instruccion=='C') && (prendido==true)) //Se teclea la "C" y además el led esta encendido
{
digitalWrite(ledr,LOW); //Apaga el led rojo
prendido=false; //Actualiza el estado del Led rojo
digitalWrite(leda,LOW); //Apaga el led amarillo
prendido=false; //Actualiza el estado del Led amarillo
digitalWrite(ledv,LOW); //Apaga el led verde
prendido=false; //Actualiza el estado del Led verde
}
} 
//Fin del programa.

Prueba esto

/*·················
 ·ANUNCIO LUMINOSO·
 ··················
 */
//··························
//·Declaración de variables·
//··························
int ledR          = 2;                 // Pin 2, asignado al led rojo
int ledA          = 3;                 // Pin3, asignado al led amarillo
int ledV          = 4;                 // Pin 4, asignado al led verde
int contador      = 0;
char instruccion;             // Variable donde se almacenara la instrucción "A" 
unsigned long ta  = 0;
//···················
//·Función principal·
//···················
void setup() {      // Se ejecuta una sola vez cada que Arduino se inicia
  Serial.begin(9600); //Inicia comunicación serial
  pinMode(ledR,OUTPUT); //Se configuran los 3 leds como salida 
  pinMode(ledA,OUTPUT);
  pinMode(ledV,OUTPUT);
  ta = millis();
}

//·················
//·Función cíclica·
//·················
void loop() {   // Se ejecuta repetidamente mientras Arduino este conectado 

  instruccion=Serial.read(); //Variable donde se guarda el valor de la terminal serial

  switch(instruccion) {

      case 'A':
                digitalWrite(ledR, HIGH);  //Enciende el led rojo
                digitalWrite(ledA, HIGH);  //Enciende el led amarillo
                digitalWrite(ledV, HIGH);  //Enciende el led verde
                break;
     
      case 'B': if (millis() - ta> 1000UL) {
                    ta = millis();
                    contador++;
                    switch(contador){
                      case 1: digitalWrite(ledV, LOW);
                              digitalWrite(ledR, HIGH);   //Enciende el led rojo
                              break;
                      case 2: digitalWrite(ledR, LOW);    // Apaga el led rojo
                              digitalWrite(ledA, HIGH);
                              break;
                      case 3: digitalWrite(ledA, LOW);    // Apaga el led rojo
                              digitalWrite(ledV, HIGH);
                              break;
                      case 4: contador = 0;
                              break;
                    }
                }
                break;

      case 'C':
                digitalWrite(ledR,LOW); //Apaga el led rojO
                digitalWrite(ledA,LOW); //Apaga el led amarillo
                digitalWrite(ledV,LOW); //Apaga el led verde
                break;

  }
} 
//Fin del programa.

Yo añadiría

if (Serial.available() > 0) {
instruccion =Serial.read();
}