while (startState == HIGH)

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.