Tiempo límite puerto serie

Buenas a todos. Estoy haciendo un proyecto en el cual quiero recibir un valor por puerto serie poco tiempo, menos de medio segundo , cambiar la posición de un servomotor y mandar un número por puerto serie. Lo que pasa es que no me cambia siempre el valor del servomotor, cambia cada dos o tres envíos. Alguien sabe por qué puede ser?

Hola Oscar, mi opinion es que el servo como todo ingenio mecanico tiene un tiempo de reaccion mientras el programa continua su marcha. De toda maneras si posteas el programa (cual es el servo tmb) siempre es mejor opinar sobre algo en concreto.
Suerte.

buenas, el servo es el HB3001, en el datasheet pone que alimentado a 6V puede cambiar de posición 60º en 0.12s (0.12s/60º), el problema está en que yo cambio la posición mandando un dato por puerto serie desde matlab, el cual recibo correctamente porque me lo devuelve bien.
Los datos se envían como caracteres. fwrite(puerto_serie,sprintf('%s',int2str(100)),'char'); y en arduino los recibo así:

if(Serial.available())
 {
   char buffer[3];
   Serial.readBytesUntil('\n',buffer,3);
   int data=atoi(buffer);
}

¿has probado con un tiempo mas largo solo para ver si asi se comporta correctamente?

Si buscas el comando que estas usando Serial.readBytesUntil()

Description
Serial.readBytesUntil() reads characters from the serial buffer into an array. The function terminates if the terminator character is detected, the determined length has been read, or it times out (see Serial.setTimeout()). The function returns the characters up to the last character before the supplied terminator. The terminator itself is not returned in the buffer.

Dice que lee caracteres del buffer serie y los colcoa en un vector. La función termina si el caracter terminador es detectado, la longitud ha sido leída o si el tiempo se ha agotado (ver Serail.setTimeout())
La función devuelve los caracteres hasta que el ultimo caracter antes del terminador suministrado. El terminador no es devuelto.

Entonces si el timeout es largo… ahi tienes tus 2 o 3 segundos.