Pages: [1]   Go Down
Author Topic: contare la ripetizione di un ciclo  (Read 831 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

riporto qui sotto parte del codice su cui lavoro:
 if (temp > 10)
  {
   temp-10;
   
  }
  else
  {
   digitalWrite(latchPin, HIGH);
  shiftOut(dataPin, clockPin, LSBFIRST, ripetizione);
  shiftOut(dataPin, clockPin, LSBFIRST, temp);
  digitalWrite(latchPin, LOW);
  }

come posso fare per contare quante volte sottraggo 10(ho indicato con "ripetizione" questo numero) alla variabile temp?
questo per mandare in output su un display a 7 segmenti un valore di temperatura(sicuramente di due cifre)

aspetto risposta grazie
Logged

Riva del Garda, TN / Forlì
Offline Offline
Edison Member
*
Karma: 8
Posts: 2246
Il piu' modesto al mondo
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

se devi solamente contare fai una variabile a tua scelta (in genere quelle incrementali si fanno chiamare i per convenzione) e la incrementi ad ogni ciclo. come? facile:
Code:
fuori loop...
int i=0;

nel loop..
 if (temp > 10)
  {
   temp-10;
   i++;
  }
  else
  {
   digitalWrite(latchPin, HIGH);
  shiftOut(dataPin, clockPin, LSBFIRST, ripetizione);
  shiftOut(dataPin, clockPin, LSBFIRST, temp);
  digitalWrite(latchPin, LOW);
  }
Logged

Il nuovo forum italiano sull'elettronica: http://www.electroit.tk/ <--- Nuovamente online!

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

mille grazie!!!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

un ultima cosa... figurati se era finita lì smiley-sweat... mi dà questo errore 
"invalid types ‘byte [10][float]’ for array subscript" cosa potrebbe essere?
Logged

Riva del Garda, TN / Forlì
Offline Offline
Edison Member
*
Karma: 8
Posts: 2246
Il piu' modesto al mondo
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

un ultima cosa... figurati se era finita lì smiley-sweat... mi dà questo errore 
"invalid types ‘byte [10][float]’ for array subscript" cosa potrebbe essere?
volevi fare una array di byte multidimensionale ma non avevi idea di cosa mettere tra parentesi a mio avviso smiley-razz

posta la parte di codice incriminata ricorda che gli array si inizializzano così:
Code:
tipo nome[];
nei multidimensionali
Code:
tipo nome[][];
nelle parentesi puoi mettere solo numeri che vai ad utilizzare nel caso tu sappia quanto grande sarà questo array (10 valori, 12, 15, 30, ecc...)
Logged

Il nuovo forum italiano sull'elettronica: http://www.electroit.tk/ <--- Nuovamente online!

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ed allora è giusto...

byte values[]={

  B00001100,

  B10110110,

  B10011110,

  B11001100,

  B11011010,

  B11111010,

  B00001110,

  B11111110,

  B11011110,

  B01111110,};

quelle sono le parentesi ed in mezzo ci sono i diciamo codici per accendere il display a 7 segmenti il primo è 1, poi 2, 3, ecc fino a 0...

cosa ho sbagliato?
Logged

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

Te lo avevo giá spegato in http://arduino.cc/forum/index.php/topic,140908.msg1058621.html#msg1058621

Un numero int a 2 cifre lo suddividi nei 2 numeri piú semplicemente cosí:

uni=temperature%10;
decine=temperature/10;

Ciao Uwe
« Last Edit: January 05, 2013, 04:58:25 pm by uwefed » Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 335
Posts: 23133
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

riporto qui sotto parte del codice su cui lavoro:
 if (temp > 10)
  {
   temp-10;
   
  }
Questo codice è sbagliato. Dove metti il risultato di temp-10?

Dovrebbe essere:
Code:
temp = temp -10;

oppure

Code:
temp -= 10;
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Uwefed l'ide di arduino il segno % me lo da non riconosciuto.... e mi da questo errore:


termometro.cpp: In function ‘void loop()’:
termometro.cpp:68:11: error: invalid operands of types ‘float’ and ‘int’ to binary ‘operator%’
« Last Edit: January 06, 2013, 07:57:33 am by wirpool » Logged

Riva del Garda, TN / Forlì
Offline Offline
Edison Member
*
Karma: 8
Posts: 2246
Il piu' modesto al mondo
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Uwefed l'ide di arduino il segno % me lo da non riconosciuto.... e mi da questo errore:


termometro.cpp: In function ‘void loop()’:
termometro.cpp:68:11: error: invalid operands of types ‘float’ and ‘int’ to binary ‘operator%’
vuol dire che l'operatore % non accetta i tipi di variabili float e non puoi passare da float a int
http://arduino.cc/en/Reference/Modulo
Logged

Il nuovo forum italiano sull'elettronica: http://www.electroit.tk/ <--- Nuovamente online!

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 115
Posts: 7258
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dai uno sguardo qui --> http://arduino.cc/forum/index.php/topic,136625.0.html
Logged

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

Pages: [1]   Go Up
Jump to: