In linea di massima dovrebbe funzionare questo: (quello dell'ultima pagina del topic linkato da ale92)
int vet[3] = { -2, -2, -2 }; //numero arbitrario, usato per vedere se è stato inserito un numero o no (non so perchè tu abbia messo -3 in quello da tre cifre, il -2 non centra niente con la dimensione dell'array) non ho
//usato -1 perchè significa che non ci sono dati da leggere (secondo la serial available) quindi si poteva fare confusione
int cont = 0;
int x = 0;
void setup()
{
// start serial port at 9600 bps:
Serial.begin(9600);
}
void loop()
{
while (Serial.available() > 0)
{
vet[cont] = Serial.read()-48; //trasformo da codice ascii a numero utilizzabile
cont++;
delay(50); //sinceramente non so il motivo tecnico ma l'ho messo perchè mi si è accesa una lampadina, senza la serial available da dei "falsi negativi" cioè legge un byte, poi anche sei hai messo 2 numeri l'istruzione //dice che non c'è più niente da leggere e quindi esce dal while, forse l'esecuzione è troppo veloce per i sui gusti, non so....
}
if (vet[0] < -2 || vet[1] < -2 || vet[2] < -2 ) Serial.println("E' STATO INSERIRTO UN CARATTERE INSERIRE SOLO NUMERI DA 1 A 999 ");
if (vet[0] > 9 || vet[1] > 9 || vet[2] > 9) Serial.println("E' STATO INSERIRTO UN CARATTERE INSERIRE SOLO NUMERI DA 1 A 999 ");
if(cont > 0) //se ho letto qualcosa fai la conversione altrimenti niente
{
cont = 0;
if (vet[1] == -2 && vet[2] == -2) //se vet[1] = a -2 cioè il valore iniziale significa che c'era solo un numero da leggere quindi è un numero da 0 a 9
{
x = vet[0];
}
else
if ( vet[2] == -2) //se vet[1] = a -2 cioè il valore iniziale significa che c'era solo un numero da leggere quindi è un numero da 0 a 9
{
x = vet[0] * 10 + vet[1];
}
else
{
x = vet[0] * 100 + vet[1]* 10+ vet[2]; //altrimenti faccio la formulina perchè è un numero da 10 a 99
}
if (vet[0] < -2 || vet[1] < -2 || vet[2] < -2 ) x =0;
if (vet[0] > 9 || vet[1] > 9 || vet[2] > 9) x =0;
Serial.println(x);
vet[0] = -2; //fix per il bug della versione precedente
vet[1] = -2;
vet[2] = -2;
}
}
L'unico problema è che utilizzando una scroolbar da python per inviarli un valore, lui da difficoltà a riceverli velocemente.