Go Down

Topic: Problema reading seriale e attesa condizione (Read 1 time) previous topic - next topic

vittorio68

ciao

ho messo la stampa del menu in una funzione per poterlo richiamare sia da setup() che da loop(). L'ho messo anche in setup proprio per evitare che l'utente possa scrivere qualcosa sulla seriale prima della stampa del menu.

In generale però l'aspetto importante è un'altro. Nel codice che avevi scritto tu, bloccavi l'esecuzione di loop in attesa di un carattere sulla seriale. Questo magari funziona pure ma mi sembra un approccio meno "generico". Nel codice che ho proposto io invece il controllore esegue sempre il loop e quindi tu potrai fargli fare altre cose ad ogni ciclo in attesa che arrivi un comando.

Ti faccio un esempio. Immagina di voler realizzare un termostato che legga all'infinito una temperatura ed attivi un relè quando questa è più bassa di una certa soglia. In più, come hai fatto tu, ogni volta che sulla seriale arriva il carattere 'a' mi risponde con l'ultima temperatura letta, quando arriva 'b' mi risponde con la media, quando arriva 'c' mi cambia di stato al relè a prescindere dalla temperatura (magari quest'ultimo esempio andrebbe approfondito per non essere assurdo...).

Con il mio approccio puoi inserire il codice per la lettura del sensore e per l'attivazione del relè all'interno del loop (prima o dopo l'if sulla Serial.Available non ha molta importanza...) ed essere sicuro che sia la gestione del sensore e del relè sia la gestione della seriale avvenga "contemporaneamente" (o almeno che sembri così).

alexsgv


ciao

ho messo la stampa del menu in una funzione per poterlo richiamare sia da setup() che da loop(). L'ho messo anche in setup proprio per evitare che l'utente possa scrivere qualcosa sulla seriale prima della stampa del menu.

In generale però l'aspetto importante è un'altro. Nel codice che avevi scritto tu, bloccavi l'esecuzione di loop in attesa di un carattere sulla seriale. Questo magari funziona pure ma mi sembra un approccio meno "generico". Nel codice che ho proposto io invece il controllore esegue sempre il loop e quindi tu potrai fargli fare altre cose ad ogni ciclo in attesa che arrivi un comando.

Ti faccio un esempio. Immagina di voler realizzare un termostato che legga all'infinito una temperatura ed attivi un relè quando questa è più bassa di una certa soglia. In più, come hai fatto tu, ogni volta che sulla seriale arriva il carattere 'a' mi risponde con l'ultima temperatura letta, quando arriva 'b' mi risponde con la media, quando arriva 'c' mi cambia di stato al relè a prescindere dalla temperatura (magari quest'ultimo esempio andrebbe approfondito per non essere assurdo...).

Con il mio approccio puoi inserire il codice per la lettura del sensore e per l'attivazione del relè all'interno del loop (prima o dopo l'if sulla Serial.Available non ha molta importanza...) ed essere sicuro che sia la gestione del sensore e del relè sia la gestione della seriale avvenga "contemporaneamente" (o almeno che sembri così).



Ti ringrazio per la spiegazione! è stata molto esaustiva e chiara! Lo so sto muovendo i primi passi in questo mondo e qualsiasi consiglio è ben accettto!
Grazie ancora.

Alex

alexsgv


ciao

ho messo la stampa del menu in una funzione per poterlo richiamare sia da setup() che da loop(). L'ho messo anche in setup proprio per evitare che l'utente possa scrivere qualcosa sulla seriale prima della stampa del menu.

In generale però l'aspetto importante è un'altro. Nel codice che avevi scritto tu, bloccavi l'esecuzione di loop in attesa di un carattere sulla seriale. Questo magari funziona pure ma mi sembra un approccio meno "generico". Nel codice che ho proposto io invece il controllore esegue sempre il loop e quindi tu potrai fargli fare altre cose ad ogni ciclo in attesa che arrivi un comando.

Ti faccio un esempio. Immagina di voler realizzare un termostato che legga all'infinito una temperatura ed attivi un relè quando questa è più bassa di una certa soglia. In più, come hai fatto tu, ogni volta che sulla seriale arriva il carattere 'a' mi risponde con l'ultima temperatura letta, quando arriva 'b' mi risponde con la media, quando arriva 'c' mi cambia di stato al relè a prescindere dalla temperatura (magari quest'ultimo esempio andrebbe approfondito per non essere assurdo...).

Con il mio approccio puoi inserire il codice per la lettura del sensore e per l'attivazione del relè all'interno del loop (prima o dopo l'if sulla Serial.Available non ha molta importanza...) ed essere sicuro che sia la gestione del sensore e del relè sia la gestione della seriale avvenga "contemporaneamente" (o almeno che sembri così).



ma in setup () gli si può anche far fare delle cose come stampare il menu?!...non credo di aver capito bene la cosa! Credevo che li si potesse solo configurare e inizializzare le cose. Inoltre, mi puoi spiegare la funzione di controllo dati disponibili sulla seriale?!

Ciao
Alex

lesto

puoi fare quello che vuoi dove vuoi, l'unico caso a parte sono i vettori di interrupt ma direi che non devi preoccupartene per ora.

per le funzioni disponibili nelle librerie ufficiali dalla pagina principale arduino.cc fai reference -> libraryes
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

alexsgv


puoi fare quello che vuoi dove vuoi, l'unico caso a parte sono i vettori di interrupt ma direi che non devi preoccupartene per ora.

per le funzioni disponibili nelle librerie ufficiali dalla pagina principale arduino.cc fai reference -> libraryes


non so se mi puoi spiegare, ma non ho capito come non far fare il refresh continuo al menù....ora me lo fa di continuo (con il sw che mi ha scritto sopra) non è piacevole vederlo lampeggiare di continuo.... scusa la mia profonda ignoranza.

Go Up