Salve a tutti!
È possibile che la Seriale non mi risulti available?
Non mi fa scrivere nel seriale e quindi non mi salva le variabili... che problema ho?
Salve a tutti!
È possibile che la Seriale non mi risulti available?
Non mi fa scrivere nel seriale e quindi non mi salva le variabili... che problema ho?
Il problema è che non hai capito come funziona la while() né la Serial.available()... ![]()
Spiega tu cosa vuoi fare, ossia come si deve comportare il programma e magari posta anche il resto del codice, così ti possiamo dare una mano e spiegare anche come sistemare le cose.. ![]()
Praticamente devo salvare delle coordinate nelle variabili HomePosition.RAHomeH, HomePosition.RAHomeM etc. E voglio che l'input avvenga dalla seriale, cioè una volta entrata nel "case SETHOME" voglio che la seriale sia disponibile tale da immettere dei valori (ad esempio 24, 32 etc), così da salvarli in quelle variabili...
Il problema è che non so se posso postare tutto il codice, perché è un lavoro di tesi e non so se ho delle restrizioni
Beh, allora, la Serial.available() ti dice solo quanti caratteri sono presenti nel buffer della seriale. Quindi se la metti nel while() e non ci sono subito caratteri, esce sicuramente. Poi la Serial.read() legge UN carattere dal buffer seriale, per cui in "HomePosition.RAHomeH" (di cui non sappiamo nulla perché non ci hai postato la sua definizione) ci sarà al massimo un valore corrispondente al carattere letto. Dato che poi hai messo un "break" esce dal while (che tra l'altro ha la graffa aperta ma non vedo quella chiusa) e poi non si sa cosa altro tu faccia, sempre perché non hai postato il codice.
Infine non hai specificato in quale formato arrivano quelle informazioni tramite seriale, se le digiti (quindi è una stringa che rappresenta un valore numerico -e di che tipo? Inero? Virgola mobile?-) o se sono dei byte che arrivano da qualche altra sorgente, ed in ogni caso qual è il formato ossia se ci sono separatori (ad esempio se digitato da tastiera c'è un "Invio" ossia i caratteri \r e \n, oppure sono stringhe a lunghezza fissa?).
Postare tutto il codice è certamente utile, non so a quali restrizioni tu ti riferisca: di tua protezione del tuo lavoro, o del forum? Se è il primo, vedi tu, ma se è il secondo, non ci sono restrinzioni particolari.
In ogni caso potrebbe anche non essere necessario, ma almeno posta la parte di codice interessata (completa ossia se ci sono blocchi di codice come quelwhile postali per intero, e se ci sono variabili o strutture posta almeno la loro definizione).
Mi riferisco alla protezione del lavoro ![]()
La graffa che manca è quella della fine del loop
La HomePosition.RAHomeH è un integer che corrisponde alla coordinata della home; dovrei digitarla nella seriale e dovrei cliccare su invio
Mi scuso in anticipo ma purtroppo ho appena iniziato a lavorare con C e Arduino, e devo modificare un file scritto da precedenti studenti.
fedeaero:
Mi scuso in anticipo ma purtroppo ho appena iniziato a lavorare con C e Arduino, e devo modificare un file scritto da precedenti studenti.
Ovviamente se conosci poco il C e quasi nulla di Arduino mi pare un poco arduo pensare di modificare un programma scritto da altri, non ti pare? Se è un lavoro utile/necessario e devi usarlo per una tesi, temo che tu debba per forza imparare il C e come funziona Arduino, non è che si lavora "per conto terzi".. ![]()
La HomePosition.RAHomeH è un integer che corrisponde alla coordinata della home; dovrei digitarla nella seriale e dovrei cliccare su invio
Ok, quindi dalla seriale devi inserire un valore intero (tra 0 e 32767 confermi?). Questo significa che dalla seriale ricevi dei CARATTERI ovvero una stringa seguita da Invio, che viene tradotto nella coppia di caratteri '\r' (CR o Carriage Return, codice 13) e '\n' (LF o Line Feed, codice 10).
Questo significa che tu riceverai UN carattere per volta, e che devi accumulare dentro ad una stringa che poi devi convertire in intero appena ricevi l'Invio ossia i caratteri CR e/o LF.
In realtà se il programma si può/deve fermare (ossia non deve fare altro mentre invii questo dato) puoi usare la parseInt() che fa questo per te, vedi il suo reference dove trovi le informazioni e qualche codice di esempio, ma in rete ce ne sono tonnellate di esempi.
Ma, ripeto, possiamo aiutarti dandoti consigli ma non a scrivere o correggere il codice, tanto più se non puoi/vuoi postare l'intero codice.