salir del ciclo

hola buenas noches, soy nuevo en el tema de arduino tengo un trabajo escolar el cual consta de un semáforo controlado por bluetooth, mi problema es que al presionar el numero 1 hace un ciclo con leds y al presionar el numero 2 se supone que tendría que salir del ciclo apagando los leds.
el código a continuación lo trate de hacer investigando por Internet pero no entiendo muy bien.

if (miBT.available()){  
 DATO = miBT.read();   
 
 if( DATO == '1' )
 {   
 while (true){
digitalWrite(verde,HIGH);
delay(1000);              
digitalWrite(verde,LOW); 
delay(500);               
digitalWrite(amarillo,HIGH); 
delay(1000);                 
digitalWrite(amarillo,LOW);  
delay(500);                  
digitalWrite(rojo,HIGH); 
delay(1000);             
digitalWrite(rojo,LOW); 
delay(500);
if (DATO == '2'){
  digitalWrite(verde,LOW);
 digitalWrite(amarillo,LOW);
 digitalWrite(rojo,LOW);
 break;
 }
     }
   
}

prueba esto. simplemente te he cambiado una llave de lugar

if (miBT.available()){ 
  DATO = miBT.read();   
 
  if( DATO == '1' )
  {   
  while (true){
 digitalWrite(verde,HIGH);
 delay(1000);             
 digitalWrite(verde,LOW);
 delay(500);               
 digitalWrite(amarillo,HIGH);
 delay(1000);                 
 digitalWrite(amarillo,LOW); 
 delay(500);                 
 digitalWrite(rojo,HIGH);
 delay(1000);             
 digitalWrite(rojo,LOW);
 delay(500);
} // -----> esta se añade
 if (DATO == '2'){
   digitalWrite(verde,LOW);
  digitalWrite(amarillo,LOW);
  digitalWrite(rojo,LOW);
  break;
  }
//      } ----> esta se anula
   
}

Saludos

Tanto en un sketch como en el otro while(true){...} esto hace que entre en un bucle infinito que repite todo el codigo entre llaves del while pero la lectura del monitor serial para recibir los caracteres se hace fuera de ese bloque por lo que nunca se podra leer la entrada de un nuevo dato y dato siempre tendra el valor inicial.

@jose

Uff esa linea se me había pasado

Moderador:
No repitas lo que se lee arriba

jose tiene razón, tenía más sentido su código anterior simplemente añadiendo la lectura de pulsadores dentro del while ya que quiere que se repita el ciclo infinitamente hasta pulsar el botón 2, el problema más grande que yo le veo es que con el motón de delays que el código vea un pulso se me antoja dificil