Go Down

Topic: contare la ripetizione di un ciclo (Read 1 time) 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy