Interrumpir proceso de un led (AYUDA)

buenas tardes grupo, tengo una pequeña duda en este codigo ya que no le veo solucion o al menos me esta liando demasiado, el programa en si emite la palabra HELP en codigo morse, pero debo de interrumpir el proceso cuando yo quiera, al apretar la letra ‘A’, y cuando lo desea apagar (interrumpir el led aunque no haya acabado de mostrar toda la palabra) presionar igual la letra ‘A’ en un codigo sencillo de apagar y prender un led funciona correctamente este codigo, alguna sugerencia.

muchas gracias por leer

int led = 13;
 bool edo=false;

 
 

 
void setup(){
 
  pinMode(led,OUTPUT);
  Serial.begin(9600);
}
 
 
 
void loop() {
 
  while(Serial.available()){
    char inChar= (char)Serial.read(); 
   Serial.println(inChar);
   if(inChar=='A') edo=!edo;
  }

   if(edo){
   

for (int x=0; x < 3 ; x++){
 
   digitalWrite(led, HIGH);
 
   delay(150);
 
   digitalWrite(led, LOW);
 
   delay(100);
 
}
 
 

 
delay(100);
 
 
 

 
for (int x=0; x<3 ; x++){
 
   digitalWrite(led, HIGH);
 
   delay(400);
 
   digitalWrite(led, LOW);
 
   delay(100);
 
}
 
 
 

 
delay(100);
 
 
 

 
for (int x=0; x < 3 ; x++){
 
   digitalWrite(led, HIGH);
 
   delay(150);
 
   digitalWrite(led, LOW);
 
   delay(100);
 
}
 
 delay(2000);
 

 }else 
    
    digitalWrite(led,LOW);
    
}
  }

Hola de nuevo...
Tu problema es el mismo de la gran mayoría que viene por aquí y se llama delay(), lo que quieres hacer no se puede lograr usando delay(), pásate a la sección de documentación y mírate los post que tratan el tema de millis() y maquinas de estados.