Go Down

Topic: contare la ripetizione di un ciclo (Read 969 times) previous topic - next topic

wirpool

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

superlol

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: [Select]

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);
 }
Il nuovo forum italiano sull'elettronica: http://www.electroit.tk/ <--- Nuovamente online!


wirpool

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?

superlol


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

posta la parte di codice incriminata ricorda che gli array si inizializzano così:
Code: [Select]

tipo nome[];

nei multidimensionali
Code: [Select]

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...)
Il nuovo forum italiano sull'elettronica: http://www.electroit.tk/ <--- Nuovamente online!

wirpool

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?

uwefed

#6
Jan 05, 2013, 10:56 pm Last Edit: Jan 05, 2013, 10:58 pm by uwefed Reason: 1
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

leo72


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: [Select]
temp = temp -10;

oppure

Code: [Select]
temp -= 10;

wirpool

#8
Jan 06, 2013, 01:33 pm Last Edit: Jan 06, 2013, 01:57 pm by wirpool Reason: 1
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%’

superlol


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
Il nuovo forum italiano sull'elettronica: http://www.electroit.tk/ <--- Nuovamente online!

PaoloP

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

Go Up