Led clignote mais ne sort plus de la boucle....

Bonjour
Je voudrais faire clignoter un LED à partir de données reçues via bluetooth d'une tablette android. Le problème c'est que je n'arrive pas à sortir de la boucle while{} d'une fonction appelée à partir de loop()....Voilà mon code

 int greenLed = 10;
 int yellowLed = 4;
 int redLedDroite = 6;
 int redLedGauche = 7;
 
 

int ledState = LOW;        
long previousMillis = 0;        
unsigned long currentMillis = millis();
long interval = 1000; 
 
  char ch;
  
  void setup()
  {
    // LEDS  
     pinMode(greenLed, OUTPUT);
     pinMode(yellowLed, OUTPUT);
     pinMode(redLedDroite, OUTPUT);
     pinMode(redLedGauche, OUTPUT);
     flag = false;
    
    Serial.begin(9600);
  }
  
  void loop()
  {
    if(Serial.available() > 0)
    {
      ch = Serial.read();
       if(ch == 'U'){
         avance();  //forward
       } 
       else if(ch == 'A'){
         recule();  // backward
       } 
       else if(ch == 'D'){
         aDroite();
        } 
        else if(ch == 'G'){
         aGauche(); 
        }
    }
  }
  
  void avance()
  {
   digitalWrite(greenLed, HIGH);
   digitalWrite(redLedDroite, LOW);
   digitalWrite(redLedGauche, LOW);
   digitalWrite(yellowLed, LOW);  
  }
  
  void recule()
  {
   digitalWrite(greenLed, LOW);
   digitalWrite(redLedDroite, LOW);
   digitalWrite(redLedGauche, LOW);
   digitalWrite(yellowLed, HIGH);     
  }
  
  void aDroite()
  {
    
   digitalWrite(greenLed, LOW);
   digitalWrite(redLedGauche, LOW);
   digitalWrite(yellowLed, LOW);  
    while(ch == 'D')
      {
         if(currentMillis - previousMillis > interval) {
            // save the last time you blinked the LED 
            previousMillis = currentMillis;   
            if(ledState == LOW)
              ledState = HIGH;
            else
             ledState = LOW;  
            digitalWrite(redLedDroite, ledState);
          } 
          
          currentMillis = millis();
      }
 }
  
  void aGauche()
  {
   digitalWrite(greenLed, LOW);
   digitalWrite(redLedDroite, LOW);
   digitalWrite(redLedGauche, HIGH);
   digitalWrite(yellowLed, LOW);     
  }

Arduino reçoit bien les données et répond . Dans la fonction aDroite() le Led clignote mais reste clignotant et le Serial.read() ne reçoit plus rien....alors ch est toujours à 'D'(ch = 'D')
Merci

    while(ch == 'D')
      {
         if(currentMillis - previousMillis > interval) {
            // save the last time you blinked the LED 
            previousMillis = currentMillis;   
            if(ledState == LOW)
              ledState = HIGH;
            else
             ledState = LOW;  
            digitalWrite(redLedDroite, ledState);
          } 
          
          currentMillis = millis();
      }

A l'entrée dans la boucle ch='D'
A l'intérieur de ta boucle rien ne modifie ch.
Donc tu restes bloqué dans la boucle.