Pages: 1 ... 4 5 [6] 7 8 9   Go Down
Author Topic: If-Switch-Array-Millis-For  (Read 4180 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Faraday Member
**
Karma: 39
Posts: 5608
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

secondo voi perche' non conta questo contatore ?
ricevo solo 999999 ad ogni secondo

Code:
for (int v=0;v<10;v++) { //counting from 0 to 9

  V1=V2=V3=V4=V5=V6=(int)(v);   

       delay(1000);
Logged

- [GUIDA] IDE1.x - Nuove Funzioni - Sketch Standalone - Bootloader - VirtualBoard
http://arduino.cc/forum/index.php/topic,88546.0.html
- [LIBRERIA] ST7032i LCD I2C Controller Library
http://arduino.cc/forum/index.php/topic,96163.0.html

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10106
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

cosa stampi e cosa sono V1 etc... in oltre è inutile il cast ad int, essendo v già un int
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

0
Offline Offline
Faraday Member
**
Karma: 39
Posts: 5608
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

le V sono int, e le stampo a monitor

vorrei che mi apparisse

000000
111111
222222
....
999999

e poi ripartire da 000000


Code:
void contiamo ()
{
 
 
  for (int v=0;v<10;v++) {                    //counting from 0 to 9

  V1=V2=V3=V4=V5=V6=(int)(v);   

       delay(1000);
 
  }


  DisplayNumberSet(V1,V2,V3,V4,V5,V6);   
 
}


invece mi appare
999999
999999
999999



« Last Edit: November 12, 2011, 07:49:15 am by Testato » Logged

- [GUIDA] IDE1.x - Nuove Funzioni - Sketch Standalone - Bootloader - VirtualBoard
http://arduino.cc/forum/index.php/topic,88546.0.html
- [LIBRERIA] ST7032i LCD I2C Controller Library
http://arduino.cc/forum/index.php/topic,96163.0.html

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10106
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

per forza, stampi i nuymeri quando il ciclo è finito, quindi quando valgono 9... prova a spostare il display all'interno del for...
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

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

per forza, stampi i nuymeri quando il ciclo è finito, quindi quando valgono 9
Eh sì...  smiley-sweat
Logged


0
Offline Offline
Faraday Member
**
Karma: 39
Posts: 5608
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho gia' provato, e' stata la mia prima prova

cioe' cosi' giusto ?

 
Code:
void contiamo ()
{
  
  for (int v=0;v<10;v++) {                    //counting from 0 to 9

  V1=V2=V3=V4=V5=V6=(int)(v);  

       delay(1000);

  DisplayNumberSet(V1,V2,V3,V4,V5,V6);  
  }
  
}


non funge, resta sempre su 999999
In piu' se ho capito bene il comando questo codice dovrebbe contarmi da 0 a 9 e poi fermarsi, cosa ci devo aggiungere per farlo andare in continuazione e quindi ripartire da 0 ?
« Last Edit: November 12, 2011, 12:07:39 pm by Testato » Logged

- [GUIDA] IDE1.x - Nuove Funzioni - Sketch Standalone - Bootloader - VirtualBoard
http://arduino.cc/forum/index.php/topic,88546.0.html
- [LIBRERIA] ST7032i LCD I2C Controller Library
http://arduino.cc/forum/index.php/topic,96163.0.html

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10106
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

così è giusto, magari l'errore è in DisplayNumberSet...

per la seconda domanda, basta mettere contiamo() nel loop...
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

0
Offline Offline
Faraday Member
**
Karma: 39
Posts: 5608
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

l'ho provato isolando il contatore dal resto dello sketch e' funziona.
Anzi arrivato a 9 riparte anche da 0 come serve a me.

Il che va bvene, ma mi aspettavo che non lo facesse, leggendo nel playgroud dice che una volta arrivato alla fine il ciclo FOR si ferma.
Non e' vero quidi ?
Ogni for arriivatoalla fine riparte da zero ?
Logged

- [GUIDA] IDE1.x - Nuove Funzioni - Sketch Standalone - Bootloader - VirtualBoard
http://arduino.cc/forum/index.php/topic,88546.0.html
- [LIBRERIA] ST7032i LCD I2C Controller Library
http://arduino.cc/forum/index.php/topic,96163.0.html

0
Offline Offline
Faraday Member
**
Karma: 39
Posts: 5608
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

per la seconda domanda, basta mettere contiamo() nel loop...
Quindi intrinsecamente il comando FOR ha un azzeramento della variabile alla fine del ciclo ? Non e' menzionata questa cosa nelle istruzioni del FOR, io la aggiungerei
Logged

- [GUIDA] IDE1.x - Nuove Funzioni - Sketch Standalone - Bootloader - VirtualBoard
http://arduino.cc/forum/index.php/topic,88546.0.html
- [LIBRERIA] ST7032i LCD I2C Controller Library
http://arduino.cc/forum/index.php/topic,96163.0.html

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

Scusa ma non ti seguo.
Il ciclo for continua finché si verifica la condizione. Nel tuo caso:
Code:
for (int v=0;v<10;v++)
fino a che
perché equivale a:
Code:
DisplayNumberSet(v,v,v,v,v,v);   
v diventa uguale o maggiore di 10.

Inotlre non capisco questo:
Code:
V1=V2=V3=V4=V5=V6=(int)(v);  
DisplayNumberSet(V1,V2,V3,V4,V5,V6);  

Perché tutti quegli assegnamenti a variabili diverse dello stesso valore?
Logged


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

Quindi intrinsecamente il comando FOR ha un azzeramento della variabile alla fine del ciclo ? Non e' menzionata questa cosa nelle istruzioni del FOR, io la aggiungerei
No, perché tu usi una variabile LOCALE che vale solo internamente al ciclo for:

for (int v=0;v<10;v++)

Al di fuori del ciclo, v non esiste.
Logged


0
Offline Offline
Faraday Member
**
Karma: 39
Posts: 5608
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

azz, e qui abbiamo imparato la differenza tra variabile locale e globale.
Grazie mille come al solito. Quindi se ho capito non e' che la "v" si azzera, ma sparisce proprio dal pianeta terra, quindi quando rientro nel ciclo FOR viene ricreata in quel momento, con il rispettivo valore dichiarato.

quella multitudine di V e' sempre per la questione valvolare, non farci caso smiley

grazie ancora a Te e Lesto
Logged

- [GUIDA] IDE1.x - Nuove Funzioni - Sketch Standalone - Bootloader - VirtualBoard
http://arduino.cc/forum/index.php/topic,88546.0.html
- [LIBRERIA] ST7032i LCD I2C Controller Library
http://arduino.cc/forum/index.php/topic,96163.0.html

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

Si chiama spazio dei nomi ed indica la visibilità di una variabile:

Code:
int a;
void fattiMiei() {
  int b;
  for (int c=0;c<10;c++) {
    ..
  }
}

"a" è vista globalmente, b solo all'interno della routine fattiMiei, "c" all'interno del ciclo for.
Logged


0
Offline Offline
Faraday Member
**
Karma: 39
Posts: 5608
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

thanks
poi vi fo sapere perche' diavolo nello sketch reale non funge smiley
Logged

- [GUIDA] IDE1.x - Nuove Funzioni - Sketch Standalone - Bootloader - VirtualBoard
http://arduino.cc/forum/index.php/topic,88546.0.html
- [LIBRERIA] ST7032i LCD I2C Controller Library
http://arduino.cc/forum/index.php/topic,96163.0.html

0
Offline Offline
Faraday Member
**
Karma: 39
Posts: 5608
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

devo eliminare il delay, di certo e' questo il problema, e se anche non fosse lo devo eliminare lo stesso.
allora ho provato a fare
Code:
    if (millis() > reset_timer + 1000)
   {       
   
      for (int v=0;v<10;v++)
      {         
       
     V1=(int)(v); 
}
       reset_timer=millis();
  }

ma logicamente lui fa un conteggio velocissimo 0-9 e poi si ferma un secondo. mentre a me serve che conta ogni secondo.

in poche parole avrei bisogno di un "For without delay" (sullascia del blink without delay) ma non trovo info.
Come si fa a temporizzare un ciclo for ?
Logged

- [GUIDA] IDE1.x - Nuove Funzioni - Sketch Standalone - Bootloader - VirtualBoard
http://arduino.cc/forum/index.php/topic,88546.0.html
- [LIBRERIA] ST7032i LCD I2C Controller Library
http://arduino.cc/forum/index.php/topic,96163.0.html

Pages: 1 ... 4 5 [6] 7 8 9   Go Up
Jump to: