contare la ripetizione di un ciclo

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

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:

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);
  }

mille grazie!!!

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

wirpool:
un ultima cosa... figurati se era finita lì :sweat_smile:... 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 :stuck_out_tongue:

posta la parte di codice incriminata ricorda che gli array si inizializzano così:

tipo nome[];

nei multidimensionali

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

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?

Te lo avevo giá spegato in problema con 74HC595 e display a 7 segmenti - #3 by system - Generale - Arduino Forum

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

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

Ciao Uwe

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

temp = temp -10;

oppure

temp -= 10;

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%’

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

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