@ miky_police, esistono più sistemi per leggere una stringa da seriale.
In questo sistema la if(Serial.available()) all'interno del while è indispensabile, ed è quella che fa
funzionare il codice.
Lo ha spiegato nei post precedenti gpb01 , arduino è più veloce della comunicazione seriale, quindi se non ci sono caratteri sulla seriale, viene eseguita comunque la Serial.read() che restituisce zero e che viene concatenato alla stringa, la stringa risultante quindi non corrisponde a quella voluta.
Mettendo invece if(Serial.available()) Serial.read(), gli diciamo "leggi solo se effettivamente c'è un carattere sulla seriale".
Come ho detto esistono delle varianti, ad esempio l'if potrebbe essere sostituito da un while( !Serial.available()) ; , che attende fino a quando ci sono caratteri disponibili sulla seriale. ![]()