while (startState == HIGH)

nel loop

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

#include <DallasTemperature.h>
#include <Wire.h>
#define ONE_WIRE_BUS 14
OneWire ourWire(ONE_WIRE_BUS);
DallasTemperature sensors (&ourWire);

const int buttonUpPin =  10;                    //numero pin a cui è collegato il pulsante di UP
const int buttonDownPin = 9;                    //numero pin a cui è collegato il pulsnte di DOWN
const int buttonMenuPin = 8;                    //numero pin a cui è collegato il pulsnte Menu
const int buttonStartPin = 7;                   //numero pin a cui è collegato il pulsnte Start

int buttonUpState;                              //stato attuale del pulsante di UP
long UpDebounceTime;                            //Variabilie di appoggio per calcolare il tempo di cambio di stato del pulsante di UP
long buttonUpPressedTime;                       //tempo che indica da quanto è stato premuto il pulsante
boolean buttonUpPressed;                        //memoria che indica il passaggio da LOW a HIGH del pulsante di UP
boolean repeatUp;                               //memoria che indica il repeat del pulsante attivo
long repeatUpTime;                              //tempo che indica da quanto è attivo il repeat
long lastRepeatUpTime;                          //variabile di appoggio per calcolare repeatUpTime
int addUp;                                      //fattore per incrementare la variabile

int buttonDownState;                            //stato attuale del pulsante di Down
long DownDebounceTime;                          //Variabilie di appoggio per calcolare il tempo di cambio di stato del pulsante di Down
long buttonDownPressedTime;                     //tempo che indica da quanto è stato premuto il pulsante
boolean buttonDownPressed;                      //memoria che indica il passaggio da LOW a HIGH del pulsante di Down
boolean repeatDown;                             //memoria che indica il repeat del pulsante attivo
long repeatDownTime;                            //tempo che indica da quanto è attivo il repeat
long lastRepeatDownTime;                        //variabile di appoggio per calcolare repeatDownTime
int addDown;                                    //fattore per incrementare la variabile

int buttonMenuState;                            //stato attuale del pulsante Menu
long MenuDebounceTime;                          //Variabilie di appoggio per calcolare il tempo di cambio di stato del pulsante Menu
int counterMenu = 0;                            //Valore incrementato di 1 col pulsante Menu per gestire i settaggi
int lastCounterMenu;                            //Variabile di appoggio per il contatore per un solo incremento ad ogni pressione

int buttonStartState;                           //stato attuale del pulsante Start
long startDebounceTime;                         //Variabile per l'antirimbalzo del pulsante
int startState;                                 //memorizza lo stato di start acceso o spento
int lastStartState = LOW;                       //memorizza ultimo stato quando viene rilasciato il tasto start

long debounceDelay = 100;                       //Tempo di debounce per i pulsanti
long pressedDelay;                              //variabile per determinare l' attivazione del repeat e il tempo di repeat quando è attivo
long timeRepeatEnable = 500;                    //costante che determina il tempo minimo per cui deve rimanere premuto il pulsante prima di ripetere l'operazione
long timeRepeat = 250;                          //costante che determina il tempo di ripetizione di UP e di DOWN

const int numStep = 5;
int timeStep[numStep] = {0,60,60,120,60};
int timeStepMax[numStep] = {2880,300,300,300,300};
int timeStepMin = 0;
long timeStepStart;
int temperatureStep[numStep] = {0, 148, 371, 732, 595,};
int temperatureStepMin = 0;
int temperatureStepMax = 1000;
int temperatureIn;
int counterControl;

float hhFloat;
int hh; //VARIABILE UTILIZZATA PER LE ORE
int mm; //VARIABILE UTILIZZATA PER I MINUTI
int hhINT;

void setup() {
  Serial.begin(9600);
  sensors.begin();
  lcd.begin (16, 2);

  pinMode (buttonUpPin, INPUT);                  //impostazione buttonUpPin come ingresso
  pinMode (buttonDownPin, INPUT);                //impostazione buttonDownPin come ingresso
  pinMode (buttonMenuPin, INPUT);
  pinMode (buttonStartPin, INPUT);
}

void loop() {
  int readingUp = digitalRead(buttonUpPin);
  int readingDown = digitalRead(buttonDownPin);
  int readingMenu = digitalRead(buttonMenuPin);
  int readingStart = digitalRead(buttonStartPin);

  if (readingUp == HIGH) {
    if ((millis() - UpDebounceTime) > debounceDelay) {
      buttonUpState = HIGH;
    }
  } else {
    buttonUpState = LOW;
    UpDebounceTime = millis();
  }
  if (readingDown == HIGH) {
    if ((millis() - DownDebounceTime) > debounceDelay) {
      buttonDownState = HIGH;
    }
  } else {
    buttonDownState = LOW;
    DownDebounceTime = millis();
  }
  if (readingMenu == HIGH) {
    if ((millis() - MenuDebounceTime) > debounceDelay) {
      buttonMenuState = HIGH;
    }
  } else {
    buttonMenuState = LOW;
    lastCounterMenu = counterMenu;
    MenuDebounceTime = millis();
  }
  if (buttonMenuState == HIGH && lastCounterMenu == counterMenu) {
    if (counterMenu <= 9) {
      counterMenu++;
      lcd.clear();
    } else {
      counterMenu = 0;
      lcd.clear();
    }
  }
  if (readingStart == HIGH) {
    if ((millis() - startDebounceTime) > debounceDelay) {
      buttonStartState = HIGH;
    }
  } else {
    buttonStartState = LOW;
    startDebounceTime = millis();
    lastStartState = startState;
  }

  switch (counterMenu) {
    case 0:
      sensors.requestTemperatures();
      lcd.setCursor(0, 0);
      lcd.print ("TEMPERATURA INT");
      lcd.setCursor(4, 1);
      lcd.print (char(223));
      lcd.print ("C ");
      lcd.print (sensors.getTempCByIndex(0));
      break;
    case 1:
      timeSet (0);
      printTime (0);
      break;
    case 2:
      timeSet (1);
      printTime (1);
      break;
    case 3:
      temperatureSet (1);
      printTemperature (1);
      break;
    case 4:
      timeSet (2);
      printTime (2);
      break;
    case 5:
      temperatureSet (2);
      printTemperature (2);
      break;
    case 6:
      timeSet (3);
      printTime (3);
      break;
    case 7:
      temperatureSet (3);
      printTemperature (3);
      break;
    case 8:
      timeSet (4);
      printTime (4);
      break;
    case 9:
      temperatureSet (4);
      printTemperature (4);
      break;
    case 10:
      lcd.setCursor (0, 0);
      lcd.print ("AVVIO PROGRAMMA?");
      lcd.setCursor (0, 1);
      lcd.print ("START PER AVVIO");
      if (buttonStartState == HIGH && lastStartState == startState) {
        startState = !startState;
        lcd.clear();
        timeStepStart = millis();
        counterMenu++;
      }
      break;
      case 11:
      temperature();
      break;
  }
}