certo perchè tu fai
if(Serial.available()){
quindi se la seriale non ha caratteri salti la lettura. Invece tu devi metterti in attesa finchè non c'è qualcosa da scrivere;
while(Serial.available()==0){
//aspetta
}
in pratica blecca il programma fiunchè non c'è qualcosa sulla seriale. non è detto che sia abbastanza per essere un float o che sia un valore valido, però