vaciar buffer serie [SOLUCIONADO]

Hola foreros!!!

Me estoy volviendo un poco loco con este tema...

a través del monitor serie del IDE de Arduino, tengo que introducir un carácter para elegir la opción de un menú, la cosa es que lo que introduzco se queda guardado y en el siguiente menú, Arduino entiende que he vuelto a pulsar esa misma opción... a ver si me explico.. jeje

//////// PRIMERA SELECCION///////
  Serial.println ("ELIJA OPCION");
  Serial.println ("1 - INTRODUCIR ID");
  Serial.println ("2 - AUTO ID");
  Serial.println("");

  while (Serial.available()==0){
    // esperar hasta escribir una de las opciones
  }
  incomingByte = Serial.read();
  Serial.print("He recibido: ");
  Serial.println(incomingByte, DEC); // 49 para la opción 1 // 50 para la opcion 2

   if (incomingByte==50){
    Serial.read();
    delay (200);
    Serial.println ("AUTO ID SELECCIONADO");
    Serial.println ("");
    Serial.println ("ELIJA OPCION");
    Serial.println ("1 - funcion1");
    Serial.println ("2 - fuincion2");
    Serial.println("");

////// SEGUNDA SELECCION/////
    while (incomingByte<49 || incomingByte>50){
        
        incomingByte=Serial.read();
              
        // esperar hasta escribir una de las opciones
      }
 if (incomingByte ==50){
// FUNCION
}

la cosa es que si en la primera opción elijo la opción 2 (AUTO ID), en la segunda opción me entra automáticamente en la "funcion2", sin darme oportunidad para poder seleccionar la "funcion1", ya que se queda en el buffer serie el "2"(ASCII) (50 en decimal).

Espero haberme explicado bien, que a veceds cuesta un poco... jejeje!!

Gracias de antemano por la ayuda!!!

Edito: He mirado la funcion "Serial.flush();" que creía que servía para lo que yo quería, pero una de dos, o no lo utilizo bien o no lo estoy entendiendo bien. También he leído que al poner "Serial.read();" ya eliminas lo que había en el buffer... aunque tampoco me ha funcionado (o lo mismo que antes.. a lo mejor lo he aplicado mal)

//////// PRIMERA SELECCION///////
  Serial.println ("ELIJA OPCION");
  Serial.println ("1 - INTRODUCIR ID");
  Serial.println ("2 - AUTO ID");
  Serial.println("");
  incomingByte=0;
  while (incomingByte==0) 
  {
    if (Serial.available())
    {
      incomingByte = Serial.read();
      Serial.print("He recibido: ");
      Serial.println(incomingByte, DEC); // 49 para la opción 1 // 50 para la opcion 2
      if (incomingByte=50) 
      {
        Serial.println ("AUTO ID SELECCIONADO");
        Serial.println ("");
        Serial.println ("ELIJA OPCION");
        Serial.println ("1 - funcion1");
        Serial.println ("2 - fuincion2");
        Serial.println("");
      }
        else if (incomingByte=49)
        {
          //
        }  
        else {incomingByte=0}
    }
  }
  ////// SEGUNDA SELECCION/////
  incomingByte=0;
  while (incomingByte==0) 
  {  
  //
  }

Algo asi?

Gracias Marcial!!

Lo probaré a ver que tal! Dándole ahí el valor "0", el buffer serie no se vacía, pero "engañas" al programa! Había pensado hacer varias variables "incomingByte1", "incomingByte2", etc... pero me gusta más tu opción!!!

Muchas gracias!!!!

Edito: Marcial, eres grande!!!! Karma+!!

Espero que te funcione, sino entrar a leer en un bucle do while hasta que no haya Serial.available(). y asi asegurar que que el buffer esta bacio

Bueno.. aquí va, y para el que le sirva!

Funcionando perfectamente!!
La historia estaba en esta linea que había que poner para vaciar el buffer serie:

 while (Serial.available()>0)  Serial.read();

ahí va un código ejemplo que espero que os sirva!!

int incomingByte=0; 
void setup(){
  Serial.begin(115200);
  delay(2500); 
}

void loop(){
  incomingByte=0; 
  Serial.println ("Elija opcion");
  Serial.println ("1");
  Serial.println("2");
  Serial.println("");
  
  while (incomingByte<49 || incomingByte>50){
    incomingByte=Serial.read();
  }
  Serial.print ("Ha elegido la opcion ");
  Serial.println (incomingByte-48);
  Serial.println("");
  
  Serial.println ("Elija otra de estas opciones:");
  while (Serial.available()>0)  Serial.read();
  
  Serial.println ("1 - opcion 1");
  Serial.println ("2 - opcion 2");
  Serial.println ("3 - opcion 3");
  incomingByte=0;
  while (incomingByte<49 || incomingByte>51){
    incomingByte=Serial.read();
  }
  if (incomingByte==49){
    Serial.println ("Estas en la opcion 1");
    delay(3000);
  }
  if (incomingByte==50){
    Serial.println ("Estas en la opcion 2");
    delay(3000);
  }
  if (incomingByte==51){
    Serial.println ("Estas en la opcion 3");
    delay(3000);
  }
}