HardwareSerial Nucleo_Slave(D2, D8); // RX, TX 

// on declare 2 variables pour socker le message et la reponse
String rep, msg;

// fonction qui lit et stock ce que l'on tape dans la com serie avec le pc 
void readSerialPort(){
  while (Serial.available()) {         // quand la com serie est disponible   
    if (Serial.available() > 0) {      // quand il y a quelque chose dans le buffer 
      msg = Serial.readString();       // On récupère le message                       
    }
    Serial.flush();                    // on vide le buffer  
  }
}

void setup(){
  Serial.begin(115200); 
  Serial.print("Sketch:   ");   Serial.println(__FILE__);
  Serial.print("Uploaded: ");   Serial.println(__DATE__);
  Serial.println();
  delay(1000);
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LOW);
  Serial.println("envoie allume ou eteint ou autre chose ...");
  Nucleo_Slave.begin(9600);  // On démarre la com avec le module BT             
}

void loop(){
  // récupération du message à envoyer
  readSerialPort();           
  
  // Reception d'une reponse de la F411RE (esclave)
  while (Nucleo_Slave.available()) {      // quand la com BT est disponible
    if (Nucleo_Slave.available() > 0) {   // quand il y a quelque chose dans le buffer 
      rep = Nucleo_Slave.readString();                 // On récupère la réponse                             
    }
  }
  // Envoie du message tapé vers la F411RE (esclave)
  if(msg!=""){                           // si notre message n'est pas vide    
    Serial.print("L476RG envoi : \"");   // on affiche le message qu'on envoie à la F411RE
    Serial.print(msg);
    Serial.println("\" à F411RE"); 
    Nucleo_Slave.print(msg);             // on l'envoie    
    msg="";                              // puis on vide notre variable
  }
  // Affichage de la réponse de la F411RE (esclave)
  if(rep!=""){                           // si la reponse n'est pas vide
    Serial.print("F411RE à répondu : "); // on affiche la reponsee que l'on à reçu de la F411RE
    Serial.println(rep);     
    if (rep.equals("OFF")) {             // on execute la commande 
      digitalWrite(LED_BUILTIN, LOW);
    } else if (rep.equals("ON")) {
      digitalWrite(LED_BUILTIN, HIGH);
    }    
  rep="";                              // puis on vide notre variable
  }
}