E' impossibile darti una risposta, è anche impossibile da quello che hai scritto, attribuire il problema al codice su arduino, potrebbe essere attribuito al codice di trasmissione e o a problemi elettronici.
Sicuramente serial.read legge un byte, se devi ricevere più byte dovrai pensare ad un ciclo solo per la seriale, altrimenti ci sarà una"pausa" tra la lettura di un byte ed esecuzione di altro codice.Se faccio queste due operazioni contemporaneamente nel loop risulta che i dati in ingresso sulla seriale vengono corrotti o arrivano troncati.