Anfänger: hab was übersehen bei Serial.available

Ich habe jetzt folgenden Code, der aus irgend einem mir nicht ganz ersichtlichen Grund rudimentär das macht, was er soll

#include "Tlc5940.h"
#include "tlc_fades.h" 
#define interval 500


int fadingMode = 0; //Beginn mit TLC Reset
int ledPins[] = {2,3,4};
int pinCount = sizeof(ledPins)/sizeof(int);
int max = 100;
unsigned char x;
unsigned long startTime = 0;
unsigned long waitUntil=0;

//TLC_CHANNEL_TYPE channel;

void setup()   {                

   Tlc.init();
  Serial.begin(115200);
}



void loop()
{    
  if(Serial.available()){
    if(Serial.peek() == 'l'){
      Serial.flush();
    }
    else{
      fadingMode = Serial.parseInt(); 
      Serial.print("Mode set to "); 
      Serial.print(fadingMode); 
      Serial.print(": ");
      startTime = millis();
      switch(fadingMode){
      case 0:
        Serial.println("allet uff Null");
        break;
      case 1:
        Serial.println("Flash");
        break;
      case 2:
        Serial.println("Schalte Led an Pin 5 ein");
        break;
      case 3:
        Serial.println("Dimme Led an Pin 5");
        break;
      case 4:
        Serial.println("Slow Blinker");
        break;
      }
    } 
  }
  unsigned char brightness;
  switch(fadingMode){
  case 0:
    // TLC Resert, alles aus
    for (int thisPin = 0; thisPin < pinCount; thisPin++) {
    Tlc.clear();
    tlc_removeFades(ledPins[thisPin]);
    Tlc.update();
    }
    break;
  case 1:
    Flash();
    break;
  case 2:
    ledset1();
    break;
  case 3:
    ledset2();
    break;
  case 4:
    slowBlink();
    break;
     
    break;   
  default:
    Serial.println("Unknown Mode!");
    delay(1000);
    break;
  }
}

void Flash(void){ // Flasher Variante
      for (int thisPin = 0; thisPin < pinCount; thisPin++) {
     // if (!tlc_isFading(ledPins[thisPin])) {
     // tlc_removeFades(ledPins[thisPin]);
      uint16_t duration = 150;
      uint32_t startMillis = millis()+ 2000;
      uint32_t endMillis = startMillis + duration;
      //Tlc.set (ledPins[thisPin], max);
      tlc_addFade(ledPins[thisPin], 4095, max, startMillis, endMillis);
      tlc_updateFades();
   //   Tlc.update(); 
}
    }
void ledset1(void){ // schaltet einfach nur die Led ein
      Tlc.set(5,4000);
      Tlc.update(); 
}

void ledset2(void){  // verändert einfach Led
     Tlc.set(5,500);
     Tlc.update(); 
}

void slowBlink(void){ //slower blinking
Tlc.clear();
    for (int thisPin = 0; thisPin < pinCount; thisPin++) {
    if (!tlc_isFading(ledPins[thisPin])) {
    Tlc.set(ledPins[thisPin],0); //Versuch, die Leds komplett auschalten 
        uint16_t duration = 1000;
        uint32_t startMillis = millis()+ 2000;
        uint32_t endMillis = startMillis + duration;
      //tlc_removeFades(ledPins[thisPin]);
      //Tlc.set (ledPins[thisPin], max);
        tlc_addFade(ledPins[thisPin], 0, 4095, startMillis, endMillis);
        tlc_addFade(ledPins[thisPin], 4095, 0, startMillis, endMillis);
  }
        tlc_updateFades();
    //  Tlc.update(); 
  }
}

aber was jetzt seltsam ist: wenn ich zwischen Mode 1 und 4 hin und her schalte, wird das Blinken manchmal zufällig. bzw. passieren dann Doppelblitzer oder sowas. Ich hab teilweise auskommentierten Code dringelassen, damit ihr sehr, was ich versucht habe.