Go Down

Topic: [risolto] [newbie] Input di un valore da seriale (Read 1 time) previous topic - next topic

_CRT_

Sep 15, 2012, 07:30 pm Last Edit: Sep 15, 2012, 08:28 pm by _CRT_ Reason: 1
Salve a tutti,

ho montato oggi il modulo I/O per Arduino FT919K della Futura Elettronica.
Dopo aver capito più o meno come lavorava lo sketch di esempio, mi sono messo in testa di fare un programma che accendesse i relais in sequenza dall'1 all'8 con un intervallo di un secondo. Fatto, senza grossi problemi.
Poi mi sono messo in testa ( ahia :) ) di passargli l'intervallo da tastiera: e qui iniziano i guai.
L'input da tastiera mi passa sempre il valore ASCIi del numero che premo, seguito *invariabilmente* da un 10 ASCII.

Ho scritto questo per vedere cosa legge la seriale

Quote

int valore=0;

void setup() {
 Serial.begin(9600);
 }
 
void loop(){
 if (Serial.available()>0){
   valore=Serial.read();
   delay(300);
   Serial.println(valore);
   }
 }



e il monitor seriale mi restituisce sempre l'ASCII del carattere che premo, seguito da 10.

Dove sbaglio ??

Grazie,
Cristiano aka _CRT_
--
evolve or die.

leo72

Perché la seriale è una trasmissione per byte e l'Arduino contiene un buffer in cui vengono riversati tutti i caratteri che riceve.
Il tuo codice legge e scrive tutti i caratteri ricevuti finché il buffer non è stato svuotato: if (Serial.available()>0).
Se stai usando il monitor seriale dell'IDE, questa spedisce anche il carattere di ritorno a capo, a meno che tu non glielo disattivi con l'apposita opzione "Nessun fine riga".

PS:
ne approfitto per ricordarti di leggere sul Reference la gestione della seriale. E di fare una ricerca sul forum: questa ti avrebbe dato centinaia di discussioni in cui si parla della seriale.

_CRT_

Ciao leo72,

grazie della risposta: ci siamo arrivati insieme :) Ho disabilitato quella maledetta tendina.
Ci credi che ho sventrato google per questa cosa ? Non sono riuscito a trovare niente o forse ero troppo impappato col cervello: ho programmato oltre 20 anni fa col basic, e ci ho messo un po per entrare nella logica di un linguaggio che non ammette dichiarazioni on the fly :)

La reference l'ho vista, avoglia: ma un "please note that the IDE monitor settings add additional characters to the serial buffer" non stava da nessuna parte :D

Vabbè, continuo a giocare con i led e a fare la presentazione sul forum, mi scuso se non l'ho fatta prima ma ero proprio ( e sono ancora) cotto...

Cristiano aka _CRT_

leo72


Ciao leo72,

grazie della risposta: ci siamo arrivati insieme :) Ho disabilitato quella maledetta tendina.
Ci credi che ho sventrato google per questa cosa ? Non sono riuscito a trovare niente o forse ero troppo impappato col cervello: ho programmato oltre 20 anni fa col basic, e ci ho messo un po per entrare nella logica di un linguaggio che non ammette dichiarazioni on the fly :)

Anche tu provieni dal BASIC vecchio stampo?  XD
Io ho imparato il C praticamente con l'Arduino, non l'ho mai usato in tanti anni.

_CRT_



Anche tu provieni dal BASIC vecchio stampo?  XD
Io ho imparato il C praticamente con l'Arduino, non l'ho mai usato in tanti anni.


Anch'io sono del 72 :) E forse anche tu come me ricevesti in regalo da un padre lungimirante un commodore 64, un padre che ha sacrificato un mese e oltre del proprio stipendio per la capoccia pazza di un figlio..

Il C l'ho letto tante volte quando mi mettevo a compilare qualche exploit, so leggere i listati e capire cosa fanno bene o male, ma quello che conta è aver programmato almeno una volta nella vita, anche in LISP, e aver acquisito la capacità di scomposizione di un problema..
Se si sa scomporre in "mattoncini lego" un problema, il 70% del lavoro è fatto. Poi tradurlo più o meno elegantemente in un linguaggio, si fa.

Ieri 10 righe di C, 2 ore. Ma per la prima volta dopo tanti anni, mi sono volate :D Erano secoli che non avevo più questa sensazione.

Ciao leo e ciao a tutti i lettori, buona domenica e have a nice arduino hack.

Cristiano aka _CRT_
--
evolve or die.

Go Up