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.

leo72


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..

Io scelsi il C16: era uscito da poco e pensavo fosse una scelta valida, poi invece mi accorsi di come questo computer non era assolutamente all'altezza del C64. Però le sue limitazioni mi hanno insegnato a saper sfruttare bene la macchina, una cosa che oggigiorno sembra sia stata ribaltata: se il software è esoso di risorse, non si chiede al programmatore di scriverlo meglio ma all'utente di potenziare l'hardware.

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy