beh a questo punto se tu invii da una tastiera ovviamente questa ti manda un char e non un int, quindi la soluzione che mi viene così al volo può essere:
se non ti interessa fare operazioni matematiche leggi tutto come char.
se invece vuoi ricevere dei numeri per ad esempio fare dei calcoli:
char read_tastiera;
int temp_numero;
int numero;
read_tastiera = Serial.read();
temp_numero = (int)(read_tastiera);
if((temp_numero<=57)&&(temp_numero>=48))
{
numero = temp_numero - 48;
Serial.Print(numero,DEC); // ristampo il numero ricevuto
}
else
{
Serial.Print(read_tastiera); // ristampo il carattere ricevuto
}
a parte il fatto che l'ho buttato giù così senza fare il debug.....
l'idea è che se quello che ricevi è un carattere corrispondente a un numero da 0 a 9 ((int)(read_tastiera) compreso tra 48 e 57) lo converti in intero (quindi se char=0 int=48 e via dicendo) e gli sottrai 48 in modo da ottenere veramente interi che vanno da 0 a 9, se invece ricevi un qualsiasi altro carattere lo consideri così com'è. Forse ci sono soluzioni + efficaci ma... dovrebbe funzionare.
Fammi sapere e spero di non averti complicato la vita.