Pages: [1]   Go Down
Author Topic: [risolto] [newbie] Input di un valore da seriale  (Read 1219 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley ) 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.
« Last Edit: September 15, 2012, 01:28:38 pm by _CRT_ » Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22938
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Offline Offline
Newbie
*
Karma: 1
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao leo72,

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

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

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_
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22938
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao leo72,

grazie della risposta: ci siamo arrivati insieme smiley 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 smiley
Anche tu provieni dal BASIC vecchio stampo?  smiley-lol
Io ho imparato il C praticamente con l'Arduino, non l'ho mai usato in tanti anni.
Logged


Offline Offline
Newbie
*
Karma: 1
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


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

Anch'io sono del 72 smiley 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-grin 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.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22938
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Anch'io sono del 72 smiley 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.
Logged


Pages: [1]   Go Up
Jump to: