[risolto] [newbie] Input di un valore da seriale

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 :slight_smile: ) 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

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.

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.

Ciao leo72,

grazie della risposta: ci siamo arrivati insieme :slight_smile: 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 :slight_smile:

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 :smiley:

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

CRT:
Ciao leo72,

grazie della risposta: ci siamo arrivati insieme :slight_smile: 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 :slight_smile:

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.

leo72:
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 :slight_smile: 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 :smiley: 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.

CRT:
Anch'io sono del 72 :slight_smile: 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.