Ciao ragazzi,
sto facendo il mio primo programmino. Per partire dalla base (devo fare un programma un po' complicato) sto cercando di individuare una virgola nel carattere che scrivo.
Il codice che ho scritto è questo :
Non viene slittato, semplicemente "Disponibile" viene stampato per ogni carattere ricevuto, quindi una prima volta per l'1 e una seconda per la virgola stessa.
Succede così perché il programma che ha scritto scrive sempre "disponibile", poi, nel caso in cui legga ',' allora scrive " virgola".
Per fare una cosa migliore puoi usare una if leggo virgola allora scrivo virgola. Ed una else allora scrivo "disponibile"
Grazie a tutti, ho fatto un erroraccio.
Sto facendo un programma che mi serve individuare la virgola per poi separare i dati che invio sulla seriale (invio 12,34) vorrei solo (34).
Ovviamente quello che ho fatto non funziona hahah
char virgola = ',';
int elemento = 0;
char Letto[3];
int Dato = 1;
void setup() {
Serial.begin(2400);
}
void loop() {
if(Serial.available()>0)
{
char c = Serial.read();
if (c == virgola)
{
Serial.println("Virgola");
Dato = 2;
}
if(Dato == 2)
{
Letto[elemento]=Serial.read();
elemento++;
}
if(elemento==3)
{
Serial.println(Letto);
}
}
}
Sul monitor seriale se invio 12,34 leggo ;
Virgola
⸮⸮⸮
Non ho idea del perchè -.-
Beh, scusate, un consiglio: per imparare meglio a capire come funzionano certe cose di base (ma non solo) e per fare un debugging più comodo perché non provare a usare TinkerCad circuits (ex Autodesk 123d circuits)?
Dopo essersi registrati (gratuitamente), si crea un circuito con Arduino, si scrive (o copia/incolla) il codice, lo si "carica" e poi si può fare debug, con tanto di breakpoint e possibilità di vedere il contenuto delle variabili!
Nel tuo caso, comunque, ti conviene accumulare TUTTI i caratteri che ricevi dalla seriale, fino a che non ricevi un Invio ("\n") ed a quel punto ti analizzi la stringa così ricevuta alla ricerca della virgola, separi i dati e poi ci fai quello che vuoi