while (startState == HIGH)

Maurotec:
Fintantoché startState == HIGH, il loop principale non viene eseguito e quindi non legge lo stato del pulsante.
Vedo un tentativo di usare una macchina a stati basata su switch case, ora secondo me dovrebbe bastare eliminare il while da dentro la funzione temperature.

Se vuoi che alcune variabili locali alla funzione temperature mantengano il loro valore puoi anteporre alla dichiarazione il termine static.

Ciao.

Si è a stati finiti e c'è lo switch case che fa da menu ma il tentativo è riuscito, funziona tutto solo che non riesco a stoppare. Le variabili presenti in temperature devono cambiare non sono sempre le stesse.