ciao...non ho guardato a fondo lo sketch ma quello che posso dirti è che se salvi in una variabile lo stato di un pin e poi metti questa variabile in un while...per poterne uscire, all'interno del while, devi mettere qualche cosa che ne possa variare il valore...altrimenti la resta...se hai un secondo while annidato nel primo...doppia attenzione.