Pages: [1] 2   Go Down
Author Topic: Incremento anomalo variabile  (Read 1001 times)
0 Members and 1 Guest are viewing this topic.
Capo d'Orlando
Offline Offline
God Member
*****
Karma: 1
Posts: 560
Electronics & Web Dev, Unix User, Ω LEO, Rock/Deep Music, Tech/Science/Finance addicted, Ski/Snowboard and much more …
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti !

Devo registrare dei dati su una sd, dato che sono molti voglio una lista ordinata:

1 - dato
2 - dato
3 - dato

Volevo mettere anche l'ora ma dovrei mettere una batteria tampone etc etc, quindi viene piùù "complicato"

Ora, provando questo semplice sketch

Code:
int a;

void setup() {
 
a=0;

Serial.begin(9600);

}

void loop() {
 
Serial.println(a++);

delay(1000);
 
}

Il risultato è:

Quote
00
1
2
3
4
5
6
7
8
9
10
[...]

Ora, perchè vengono due 0 anziché uno solo ??

Grazie  smiley
Logged


Capo d'Orlando
Offline Offline
God Member
*****
Karma: 1
Posts: 560
Electronics & Web Dev, Unix User, Ω LEO, Rock/Deep Music, Tech/Science/Finance addicted, Ski/Snowboard and much more …
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

avevo provato come hai detto tu, solo che faceva 11 anziché 00 !  smiley-sad

Quote
1
1
2
3
4
5
6
7
8
9
10
Logged


Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 114
Posts: 7205
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si, in effetti è un comportamento strano.  smiley-sweat
Sembra che non dipenda dall'incremento.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Capo d'Orlando
Offline Offline
God Member
*****
Karma: 1
Posts: 560
Electronics & Web Dev, Unix User, Ω LEO, Rock/Deep Music, Tech/Science/Finance addicted, Ski/Snowboard and much more …
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Che poi avviene solamente al primo avvio, dopo aver caricato lo sketch, del monitor seriale !

quando chiudo e lo riapro, riparte dall'ultimo stato con cui ho chiuso il monitor prima ! In questo caso ho chiuso all'ottavo incremento, e riparte da 8 e poi rincomincia ...

Quote
8
1
2
3
Logged


Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 114
Posts: 7205
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Prova così:
Code:
int a;

void setup() {
a=0;
Serial.begin(9600);
Serial.flush();
}

void loop() {
Serial.println(a++);
delay(1000);
}
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Capo d'Orlando
Offline Offline
God Member
*****
Karma: 1
Posts: 560
Electronics & Web Dev, Unix User, Ω LEO, Rock/Deep Music, Tech/Science/Finance addicted, Ski/Snowboard and much more …
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Nada !

Può essere un qualche "buffer" nons vuotato correttamente ??
Logged


Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 114
Posts: 7205
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Che versione di IDE usi?
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21872
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho provato il Tuo sketch con un Arduino 2009 328, Win XP SP3 e IDE 1.0.2 e non mi fa il doppio zero o stampa l' ultima lettera una seconda volta.

Che Arduino hai e che IDE usi?

Ciao Uwe
Logged

Capo d'Orlando
Offline Offline
God Member
*****
Karma: 1
Posts: 560
Electronics & Web Dev, Unix User, Ω LEO, Rock/Deep Music, Tech/Science/Finance addicted, Ski/Snowboard and much more …
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Mac OS 10.8.2, IDE 1.0.3, Arduino UNO rev.3
Logged


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

Lo fa per il semplice motivo che la scheda viene ri-resettata all'apertura del monitor seriale per cui il primo numero lo stampa 2 volte.
Questo perché l'IDE è scritta in modo tale che l'apertura della comunicazione seriale sia interpretata dal bootloader dell'Atmega16U2 come segnale di reset. Quindi l'Arduino inizia lo sketch, stampa 0, poi tu apri il monitor seriale e questo resetta l'Arduino, che riparte nuovamente da 0.

Prova questo sketch, che introduce un ritardo fra l'avvio e l'inizio delle trasmissioni:
Code:
int a;

void setup() {
  a=0;
  delay(2000);
  Serial.begin(9600);
}

void loop() {
  Serial.println(a++);
  delay(1000);
}
Logged


Capo d'Orlando
Offline Offline
God Member
*****
Karma: 1
Posts: 560
Electronics & Web Dev, Unix User, Ω LEO, Rock/Deep Music, Tech/Science/Finance addicted, Ski/Snowboard and much more …
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Perfetto, ora non fa la doppia cifra iniziale, ma rimane lo stesso l'ultima cifra della precedente chiusura !

Quote
4
0
1
2
3
4
5
6
Logged


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

Quella rimarrà sempre perché un monitor seriale non è un display di un PC che puoi svuotare con un comando tipo CLEAR  smiley-wink
Se non vuoi vedere i vecchi dati, scriviti un tuo monitor seriale che riceva i dati dall'Arduino e li visualizzi da qualche parte nel modo a te più consono.
Logged


Capo d'Orlando
Offline Offline
God Member
*****
Karma: 1
Posts: 560
Electronics & Web Dev, Unix User, Ω LEO, Rock/Deep Music, Tech/Science/Finance addicted, Ski/Snowboard and much more …
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ah okok !

A me interessava il fatto di eliminare la doppia cifra iniziale !

Grazie !

Code:
int a;

void setup() {
  a=0;
  delay(2000);
  Serial.begin(9600);
}

void loop() {
  Serial.println(a++);
  delay(1000);
}
Logged


BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21872
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Prova questo e vedi se viene da Arduino o dal Buffer del MAC:

Code:
int a;

void setup() {
  a=0;
  delay(2000);
  Serial.begin(9600);
  Serial.println("Start");
}

void loop() {
  Serial.println(a++);
  delay(1000);
}

La cifra falsa viene adesso prima o dopo il "Start"?
Ciao Uwe
Logged

Capo d'Orlando
Offline Offline
God Member
*****
Karma: 1
Posts: 560
Electronics & Web Dev, Unix User, Ω LEO, Rock/Deep Music, Tech/Science/Finance addicted, Ski/Snowboard and much more …
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Dopo aver caricato la prima volta lo sketch, avvio il monitor ed esce così:

Quote
StarStart
0
1
2
3
4
5

Chiudo e riapro il monitor, ed esce così:

Quote
5Start
0
1
2
3
4
5
6
Logged


Pages: [1] 2   Go Up
Jump to: