Problema con lettura seriale

Ciao a tutti, ho bisogno del vostro aiuto.
Questo è un codice per gestire una sbarra automatizzata (tipo parcheggio) con relativa fotocellula (è un modellino). La sbarra è mossa da un piccolo servomotore.

#include <Servo.h>
#include <SoftwareSerial.h>

Servo myservo;

int input = 'n';
int pos = 0;
int giu = 75, su = 160;
int pinFoto = 14;

boolean discInterrotta = false;

unsigned long tempoDiscesa = 0;

SoftwareSerial ser(2, 3);

void setup() {
  Serial.begin(9600);
  ser.begin(9600);
  pinMode(12, OUTPUT);
  pinMode(pinFoto, INPUT);
  digitalWrite(12, HIGH);
  digitalWrite(pinFoto, LOW);
  myservo.attach(11);
  myservo.write(giu);
  delay(2000);
}

void loop() {
  if (Serial.available()) {
    input = Serial.read();
  }
  if (ser.available()) {
    input = ser.read();
  }

  while (input == 'y' ) {
    if (discInterrotta == false){
      salita(giu);
      delay(5000);
    }

    if (digitalRead(pinFoto) == LOW) {
      while (digitalRead(pinFoto) == LOW) {}
      tempoDiscesa = millis();
      delay(4000);
    }
    discInterrotta = discesa();
    if (discInterrotta == false)
      input = 'n';
    else
      delay(4000);
  }
}


void salita(int posIniziale) {
  for (pos = posIniziale; pos <= 160; pos++) {
    myservo.write(pos);
    delay(15);
  }
}

boolean discesa() {
  pos = 160;
  while (pos >= 75 and digitalRead(pinFoto) == HIGH) {
    myservo.write(pos);
    delay(15);
    pos--;
    Serial.println(digitalRead(pinFoto));
  }
  if (digitalRead(pinFoto) == LOW){
    salita(pos);
    return true;
  }
  else
    return false;
}

Cerco di spigare... in sostanza il while gestisce la sbarra: quando si entra nel while la sbarra si alza ecc... e Arduino rimane nel while fino a quando la sbarra non è ritornata alla posizione di riposo. Non vi descrivo la logica perchè non è rilevante.
Come vedete, il comando per azionare il cancello, è in realtà una lettura da seriale. Al momento utilizzo sia la Serial0 che una seriale software, che di fatto è un modulo HC05. Il problema è il seguente: se digito il carattere 'y' da tastiera o lo invio via bluetooth la sbarra si alza (fin qui tutto ok); se mentre la sbarra è ancora in azione (Arduino è nel while) invio ancora il carattere 'y', dopo che la sbarra è tornata in posizione di riposo, subito si rialza ed effettua tutta la procedura un altra volta.
In sostanza vorrei che, quando la sbarra è in azione, il "telecomando" venga ignorato. Sinceramente credevo di avere già gestito questo caso, lasciando if(Serial.available()) fuori dal while.
Spero di avere esposto bene il problema... sapete darmi qualche dritta?
Grazie come sempre.

Penso succeda perché il carattere inviato ti resta nel buffer...dovresti svuotarlo prima di uscire dal while()

Grazie per la risposta, come si fa a svuotare il buffer?

while(Serial.available()){
Serial.read();
}