Problema spegnimento LED Stream

Salve ragazzi ho un problema con un piccolo programmino, in pratica questo riceve da seriale un comando di questo formato “stringa-intero”, lo analizza e divide la stringa dall’intero, quest’ultimo viene salvato in una variabiletimer dopo averlo convertito in intero.
Il problema consiste nel fatto che dopo aver inviato il comando per accendere il LED (in modo fisso, senza timer) inviando il comando per farlo spegnere nn si spegne (con il timer invece si spegne).
Qualcuno sarebbe così gentile da darmi una mano?

#define serraggio 13
#define riscaldatore 2
#define salita 4
#define discesa -10
#define aspirazione 7
#define raffreddamento 8
#define sformatura 12

String comando;
String x;
char stringa[100];
long tempo;
boolean haTimer = false;
int timer;
boolean riscaldatoreIsOn =false;

void setup(){
pinMode (serraggio, OUTPUT);  //serraggio
pinMode (riscaldatore, OUTPUT); //riscaldatore
pinMode (salita, OUTPUT); //piano
pinMode (discesa, OUTPUT); //discesa
pinMode (aspirazione, OUTPUT); //aspirazione
pinMode (raffreddamento, OUTPUT); //raffreddamento
pinMode (sformatura, OUTPUT); //sformatura
Serial.begin(9600); //lavoro a 9600
Serial.flush();
}


void loop(){
  if(Serial.available()){
   x= Serial.readString();  //leggo la stringa intera
   Serial.println(x);
   for(int i=0; i<= x.length(); i++){
    stringa[i] = x.charAt(i);
    Serial.println(stringa[i]);
   }
   char* item = strtok(stringa, "-"); //cerco la parola del comando fino al trattino
    if( item != NULL){                //se nonè nulla la salvo in comando
      comando = item;
      Serial.println(comando);
      item = strtok(NULL, "-");       //cerco il tempo da aspettare
      if( item!= NULL) {              //se non è nullo setto haTimer a true e lo salvo intempo
        haTimer= true;
        tempo = atol(item);           //cast da stringa a long
        timer= tempo*1000;            // timer in secondi
      } 
      Serial.println(tempo);
    }
    //------------------------------------------------------------------------------ in questo modo abbiamo ricevuto il comando ed il tempo
      if(comando.equals("riscaldatoreOn")){         
         digitalWrite(riscaldatore, HIGH);
         riscaldatoreIsOn= true;
         if(timer !=0){
            delay(timer);
            digitalWrite(riscaldatore, LOW);  
            riscaldatoreIsOn = false;
         }  
      else if(comando.equals("riscaldatoreOff")){
        if(timer == 0 && riscaldatoreIsOn== true){
            digitalWrite(riscaldatore, LOW);
            riscaldatoreIsOn=false;
        }
      }
}
  }
}

Buongiorno,
NON avendolo tu ancora fatto, nel rispetto del regolamento della sezione Italiana del Forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo