Intanto vi ringrazio tutti per le numerose risposte!
@GINGARDU
Ti ringrazio per avermi postato il codice, ma mi sembra che sia quasi uguale a quello che avevo visto prima.
Il problema è che c'è quel delay() che rallenta il tutto!
Con i link che mi avete postato sono riuscito a fare qualcosa di interessante e sembra funzionare.
Ecco il codice che ho un po' modificato:
char temp[10];
int cont_t;
boolean inizio_t = false;
boolean fine_t = false;
int pwm;
void setup()
{
Serial.begin(9600);
Serial.flush();
}
void loop()
{
if(Serial.available() > 0)
{
ottieni_dati();
}
}
// -------------------- METODI -------------------
void ottieni_dati()
{
char rx = Serial.read();
// --------------- TEMPERATURA -------------
if(rx == '<')
{
inizio_t = true;
cont_t = 0;
temp[cont_t] = '\0';
}
else if(rx == '>')
{
fine_t = true;
}
else if(inizio_t == true)
{
temp[cont_t] = rx;
cont_t++;
temp[cont_t] = '\0';
}
if(inizio_t && fine_t)
{
// Converto la stringa in intero
int tempInt = atoi(temp);
// Uso il valore
//Serial.print("Valore: ");
Serial.println(tempInt);
pwm = tempInt;
// Azzero tutto per la possima lettura
inizio_t = false;
fine_t = false;
cont_t = 0;
temp[cont_t] = '\0';
}
}
Se a qualcuno dovesse servire:
-Per inviare un valore numerico esso deve essere racchiuso tra '<' e '>' ad esempio per inviare il numero 300 devo inviare '<300>'.
-Funziona anche se invio dati velocemente, per esempio io con la scroolbar in meno di un secondo potrei inviare più di 200 valori.
-Ho notato che se decommento la riga "Serial.print("Valore: ");" oltre ad inviare 200 valori invierei anche 200 volte la parola "Valore:" e quindi inizierebbe a inviare dati a scatti con alcuni valori sballati. Io ho risolto aumentando il baud a 115200.