Cómo realizar una comunicación serial con varias funciones?

Tambien, intento realizar con funciones y llamarlas en el void loop, pero obtengo el mismo resultado:

int sensor1 = 12;       // Pin del sensor utilizado como entrada digital  en el lado derecho(#1).
int sensor2 = 11;       // Pin del sensor utilizado como entrada digital  en el lado izquierdo(#2).
int sensor3 = 8;        // Pin del sensor utilizado como entrada digital  en el lado auxiliar derecho(#3).
int sensor4 = 7;        // Pin del sensor utilizado como entrada digital  en el lado auxiliar izquierdo(#4).
int sensor5 = 2;        // Pin del sensor utilizado como entrada digital  para la estación.
int valorsensor1 = 0;   // Valor inicial de la lectura digital del sensor #1.
int valorsensor2 = 0;   // Valor inicial de la lectura digital del sensor #2.
int valorsensor3 = 0;   // Valor inicial de la lectura digital del sensor #3.
int valorsensor4 = 0;   // Valor inicial de la lectura digital del sensor #4.
int valorsensor5 = 0;   // Valor inicial de la lectura digital del sensor #5.
int salida1 = 3;        // Salida conectada al pin 3. (avance llanta derecha)
int salida2 = 9;        // Salida conectada al pin 5. (reversa llanta derecha)
int salida3 = 5;        // Salida conectada al pin 9. (avance llanta izquierda)
int salida4 = 10;       // Salida conectada al pin 10. (reversa llanta izquierda)
int omitir_izquierda =0;        
int omitir_derecha =0;
int estacion =0;

void setup() 
{
  Serial.begin(38400); // Comenzamos comunicacion serial.
  pinMode(sensor1, INPUT);    // Inicializa el pin 12 como entrada digital.
  pinMode(sensor2, INPUT);    // Inicializa el pin 11 como entrada digital.
  pinMode(sensor3, INPUT);    // Inicializa el pin 8 como entrada digital.
  pinMode(sensor4, INPUT);    // Inicializa el pin 7 como entrada digital.
  pinMode(sensor5, INPUT);    // Inicializa el pin 2 como entrada digital.
  pinMode (salida1, OUTPUT);  // Inicializa el pin 3 como salida digital.
  pinMode (salida2, OUTPUT);  // Inicializa el pin 9 como salida digital.
  pinMode (salida3, OUTPUT);  // Inicializa el pin 5 como salida digital.
  pinMode (salida4, OUTPUT);  // Inicializa el pin 10 como salida digital. 
}
 
void avanzar()
{
  if(valorsensor1==0 && valorsensor2==0)   // Si la lectura del sensor #1 (derecho) es 0, y del sensor #2 (izquierdo) es 0, entonces avanza.
  {
   analogWrite(salida1,250);
   digitalWrite(salida2,0);
   analogWrite(salida3,250);
   digitalWrite(salida4,0);
   Serial.println("avanza"); 
  }
}

void dersuave()
{
  if(valorsensor1==1 && valorsensor2==0)  // Si la lectura del sensor #1 (derecho) es 1, y del sensor #2 (izquierdo) es 0, gira suavemente a la derecha. 
   {
   digitalWrite(salida1,0);
   digitalWrite(salida2,0);
   analogWrite(salida3,200);
   digitalWrite(salida4,0);
   Serial.println("derecha suave"); 
   }
}

  void izqsuave()
  {
  if(valorsensor1==0 && valorsensor2==1)  // Si la lectura del sensor #1 (derecho) es 0, y del sensor #2 (izquierdo) es 1, gira suavemente a la izquierda.
   {
   analogWrite(salida1,200);
   digitalWrite(salida2,0);
   digitalWrite(salida3,0);
   digitalWrite(salida4,0);
    Serial.println("izquierda suave"); 
   }
  }

void derecha90()
{ 
  if (valorsensor1==1 && valorsensor3==1) //Si la lectura del sensor #1 (derecho) es 1, y del sensor #3 (izquierdo auxiliar) es 1, gira 90º a la derecha.
   {
   digitalWrite(salida1,0);
   digitalWrite(salida2,0);
   analogWrite(salida3,200);
   digitalWrite(salida4,0);
   delay(2000);
   Serial.println("derecha toda"); 
   }
}

void omiitirder()
{
  if (valorsensor1==1 && valorsensor3==1) //Si la lectura del sensor #1 (derecho) es 1, y del sensor #3 (izquierdo auxiliar) es 1, gira 90º a la izquierda.
   {
   analogWrite(salida1,250);
   digitalWrite(salida2,0);
   analogWrite(salida3,250);
   digitalWrite(salida4,0);
   delay(2000);
   omitir_derecha=omitir_derecha+1;
   Serial.println("omitir derecha"); 
   }
}

void izquierda90()
{
  if (valorsensor2==1 && valorsensor4==1) //Si la lectura del sensor #2 (izquierdo) es 1, y del sensor #3 (derecho auxiliar) es 1, gira 90º a la derecha.
   { 
   analogWrite(salida1,200);
   digitalWrite(salida2,0);
   analogWrite(salida3,0);
   digitalWrite(salida4,0);
   delay(2000);
   Serial.println("izquierda toda"); 
   }    
}

void omitirizq()
{
  if (valorsensor2==1 && valorsensor4==1) //Si la lectura del sensor #2 (izquierdo) es 1, y del sensor #3 (derecho auxiliar) es 1, gira 90º a la izquierda.
   { 
   analogWrite(salida1,250);
   digitalWrite(salida2,0);
   analogWrite(salida3,250);
   digitalWrite(salida4,0);
   delay(2000);
   omitir_izquierda=omitir_izquierda+1;
   Serial.println("omitir izquierda"); 
    }
} 

void estaciones()
{
if (valorsensor5 ==0 )                   //Si la lectura del sensor #5 (estaicciones) es 0, cumplirá las siguientes condiciones: 
   {
    switch (estacion)                    // Se ejecuta la variable estacion.
    {
     case 0:                             //Se ejecuta el caso, avanza dos segundos en la estacion para luego continuar.
            delay (1000);
            digitalWrite(salida1,0);
            digitalWrite(salida2,0);
            digitalWrite(salida3,0);
            digitalWrite(salida4,0);
            Serial.println("estacion 1");
            delay (2000);
            estacion=1;
            Serial.println(estacion);
            break;
     case 1:                            //Se ejecuta el caso, donde ha llegado a su punto de partida.
            digitalWrite(salida1,0);
            digitalWrite(salida2,0);
            digitalWrite(salida3,0);
            digitalWrite(salida4,0);
            Serial.println("estacion 2");
            delay(1000);
        while(digitalRead(sensor5)==0)  //Espera a ser desbloqueado el sensor #5 para continuar
            {}
            estacion=0;
            break;
       }
     }  
}

  void loop() //la distancia entre lineas para el giro es de 3cm, la linea debe quedar de 7cm
{ 
  valorsensor1 = digitalRead(sensor1);   // Lee el valor del pin entrada 12, o sea el valor que entrega el sensor #1 (derecho). 
  valorsensor2 = digitalRead(sensor2);   // Lee el valor del pin entrada 11, o sea el valor que entraga el sensor #2 (izquierdo).
  valorsensor3 = digitalRead(sensor3);   // Lee el valor del pin entrada 8, o sea el valor que entraga el sensor #3 (auxiliar derecho).
  valorsensor4 = digitalRead(sensor4);   // Lee el valor del pin entrada 7, o sea el valor que entraga el sensor #4 (auxiliar izquierdo).
  valorsensor5 = digitalRead(sensor5);   // Lee el valor del pin entrada 2, o sea el valor que entraga el sensor #5 (sensor de estación).       

if (Serial.available ());
  
  int c;
  c = Serial.read();
if (c=='1')               // Estación izquierda
  {
   avanzar();
   dersuave();
   izqsuave();
   derecha90();
   omitirizq();
   estaciones();
  }
  if (c=='2')       //Estación derecha
  {
   avanzar();
   dersuave();
   izqsuave();
   izquierda90();
   omiitirder();
   estaciones();
     
  }
}

Al realizar el ensayo, el seguidor de linea se queda en la función "avanzar", y no ejecutan las demás funciones que están dentro de la condición "if" en el void loop; los sensores TCRT5000 continúan realizando el sensado, ya que habilite leds que me indican si estos sensores funcionan o no.

Quedo a la espera de una solucion o sugerencia que pueda mejorar o corregir este error en mi programa.

Gracias.