Entra a leer el puerto serie dos veces cuando sólo mando un entero

Buenas. Una pregunta rápida.

Tengo este código muy sencillo:

int velocidad;
void setup()
{
   Serial.begin(9600);
   Serial.setTimeout(500);
}
void loop()
{
   if (Serial.available()>0){
    velocidad = Serial.parseInt();
    Serial.print("Velocidad:");
    Serial.println(velocidad);
   }
   delay(1000);
}

El problema es que al escribir un entero en el monitor serie y enviarlo a la placa desde el PC la rutina entra al if dos veces. La primera vez obtiene el dato bien pero en la segunda pone siempre 0. Supongo que es porque se mandan dos secuencias de cadenas de caracteres y la segunda es una secuencia vacía.
¿Alguien sabe por qué se manda la segunda y si se puede descartar limpiando el puerto tras leer lo que me interesa?

Mi solución ha sido tener en cuenta que la secuencia que quiero lleva más de 2 bytes y la que no quiero leer siempre lleva 2, así que con Serial.available()>2 debería funcionar siempre. ¿Sirve o puede darme problemas aún con un código tan simple?

Gracias de antemano por vuestra respuesta. :wink:

Para que esto?

   Serial.setTimeout(500);

coméntalo y prueba nuevamente.

cuando digitas algo siempre se envia el numero en ASCII y luego dos caracteres extra LF y CR.

Un line feed signfifca moverse una linea hacia adelante y tmb lo simbolizas asi \n o 0x0D en hexa.
El carriage return signfica mover el cursor al comienzo de la linea. Su código es \r o 0x0A en hexa.

El Timeout te debe estar generando secuencias no deseadas x eso comentalo y verás que funcionará bien.