Ottimizzare il codice

Questo è il codice che ho sviluppato, e sembra funzionare ...

#define nTimer 3
#define pinLed 13

byte Timer [nTimer] = {10 , 40 , 60 };
byte n;
byte RxCar;

//byte Timer;

void setup() {
  Serial.begin(9600);
  pinMode(pinLed, OUTPUT); 
}


void loop() {

  delay (100);
  Tmr();  
  
  if (Serial.available()) {
    RxCar = Serial.read();
    Timer[2]=60;
    digitalWrite(pinLed,HIGH);
  }

}

void Tmr (){
  for (n=0;n < nTimer; n++){
    if (Timer[n]){         // timer ancora attivo
      Timer[n] --;         // decrementa
      if (!Timer[n]) {     // conteggio terminato
        switch (n) {
          case 0:
            Sub0();
            break;
          case 1:
            Sub1();
            break;
          case 2:
            Sub2();
            break;
        } // switch
      } // if     
    } // if  
  } // for
} // void Tmr

void Sub0() {
  Serial.println("Trascorso 1 sec.");
}
void Sub1() {
  Serial.println("Trascorso 4 sec.");
}
void Sub2() {
  Serial.println("Trascorso 6 sec.");
  digitalWrite(pinLed,LOW);
}

Per la chiamata al timer, per praticità, ho utilizzato delay, ma nella versione defintiva usero millis().
Appena si invia un byte sulla seriale, si accende per 6" il led 13.
Attendo osservazioni