Loading...
Pages: [1]   Go Down
Author Topic: contare la ripetizione di un ciclo  (Read 233 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 11
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: 7
Posts: 2071
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: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

mille grazie!!!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 11
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: 7
Posts: 2071
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: 11
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: 160
Posts: 15619
+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

Forum Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 219
Posts: 16431
Don't know what I do
View Profile
 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: 11
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: 7
Posts: 2071
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
Offline Offline
Faraday Member
**
Karma: 49
Posts: 3000
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

IDE 1.0.4 - Arduino UNO R3 - Ethernet Shield R3 - DCF77 Module - Adafruit Data Loggin Shield - LCD 16x2 RGB positive backlight - i2c LCD backpack - RTC 1307 Board - Saleae Compatibile Logic Analyzer 8ch 24Mhz - ATtiny2313 ProtoBoard - Xino Board - ATtiny 4313 - Arduino 2009 - Arduino USB Serial Ligth - DS18B20 - LM35DZ - ShiftRegister - TL431 - ATtiny 85
Ultimi acquisti:
CodeBender: http://codebender.cc/register/?referrer=PaoloP

Pages: [1]   Go Up
Print
 
Jump to: