Ciao Guglielmo, ho visto che hai chiuso il vecchio post, quindi, ne ho aperto un' altro con un codice che sono riuscito a generare ma ho questo problema, spero mi aiutate almeno a capire
Ho messo una variabile "countnumber" che, qualsiasi valore assegno ad inizio programma, me la stampa sui display con spenti quelli a sinistra che non hanno un valore da stampare, esempio sotto:
00000123
123 (Viene mostrato in questo modo)
A questo punto, manca la parte che va a contare e l' ho fatta attraverso un' ingresso che, quando a livello alto, addiziona +1500 al contatore (countnuber=countnumber+1500;)
Ho aggiunto anche un delay come debouncer da pochi milliecondi
Il problema è che, quando porto a livello alto, il contatore non addiziona +1500, ma molto, molto di più, come se ci fosse un moltiplicatore e non lo fa istantaneamente, ma i numeri scorrono come se ci fosse un tempo di qualche secondo, una sorta di cronometro quindi. Ho provato a cambiare valore con +1 invece di +1500 per vedere il valore totale, e con un valore iniziale di 1200, trovo letto 1285
Tengo a precisare che do solo un' impulso velocissimo, ma il contatore continua a contare anche dopo il rilascio per un tempo totale di qualche secondo.
IL DELAY NON CAMBIA LA FREQUENZA DI CONTEGGIO, MA IL NUMERO DA CONTEGGIARE
PIU E' BASSO IL DELAY E PIU ALTO è IL PUNTEGGIO TOTALIZZATO ATTRAVERSO UN SOLO IMPULSO
se invece rimuovo il delay, il contatore con l' impulso arriva a totalizzare 1918, sempre nel lasso di tempo di qualche secondo.
è come se le operazioni rallentino il codice, ma nello sketch non esistono delay, a parte quello che ho messo io e non capisco perchè non viene visualizzato istantaneamente
Spero di essermi spiegato bene, in caso contrario, ditemi cosa non è chiaro
Grazie
#define Max7219DIN 12 // Pin 7 connected to DIN (DataIN)
#define Max7219CLK 13 // Pin 6 connected to CLK
#define Max7219CS 10 // Pin 5 connected to CS
const int buttonPin = 2; // the number of the pushbutton pin
#include "LedControl.h" // LedControl Library created by Eberhard Fahle at http://playground.arduino.cc/Main/LedControl
LedControl lc = LedControl(Max7219DIN, Max7219CLK, Max7219CS, 1); // Last number represent the number of Max7219 Modules connected
long int countnumber = 1200 ; // VARIABILE CONTATORE
int buttonState = 0;
// Variables to store individual numbers
int firstnum = 0;
int secondnum = 0;
int thirdnum = 0;
int fournum = 0;
int fivenum = 0;
int sixnum = 0;
int sevennum = 0;
int eightnum = 0;
void setup() {
lc.shutdown(0, false); // Wake up the display
lc.setIntensity(0, 7); // Set Brightness 0-15
lc.clearDisplay(0); // Clear display
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH)
countnumber=countnumber+1;
delay(0);
{
// Display number on Display depending on number of digits remaining
if (countnumber > 9999999) {
firstnum = ((countnumber / 10000000) % 10);
secondnum = countnumber / 1000000 % 10;
thirdnum = countnumber / 100000 % 10;
fournum = countnumber / 10000 % 10;
fivenum = countnumber / 1000 % 10;
sixnum = countnumber / 100 % 10;
sevennum = countnumber / 10 % 10;
eightnum = countnumber % 10;
lc.setDigit(0, 7, firstnum, false);
lc.setDigit(0, 6, secondnum, false);
lc.setDigit(0, 5, thirdnum, false);
lc.setDigit(0, 4, fournum, false);
lc.setDigit(0, 3, fivenum, false);
lc.setDigit(0, 2, sixnum, false);
lc.setDigit(0, 1, sevennum, false);
lc.setDigit(0, 0, eightnum, false);
}
else {
if (countnumber > 999999) {
// firstnum = ((countnumber/10000000)%10);
secondnum = countnumber / 1000000 % 10;
thirdnum = countnumber / 100000 % 10;
fournum = countnumber / 10000 % 10;
fivenum = countnumber / 1000 % 10;
sixnum = countnumber / 100 % 10;
sevennum = countnumber / 10 % 10;
eightnum = countnumber % 10;
lc.setChar(0, 7, ' ', false);
lc.setDigit(0, 6, secondnum, false);
lc.setDigit(0, 5, thirdnum, false);
lc.setDigit(0, 4, fournum, false);
lc.setDigit(0, 3, fivenum, false);
lc.setDigit(0, 2, sixnum, false);
lc.setDigit(0, 1, sevennum, false);
lc.setDigit(0, 0, eightnum, false);
}
else {
if (countnumber > 99999) {
// firstnum = ((countnumber/10000000)%10);
// secondnum = countnumber/1000000%10;
thirdnum = countnumber / 100000 % 10;
fournum = countnumber / 10000 % 10;
fivenum = countnumber / 1000 % 10;
sixnum = countnumber / 100 % 10;
sevennum = countnumber / 10 % 10;
eightnum = countnumber % 10;
lc.setChar(0, 7, ' ', false);
lc.setChar(0, 6, ' ', false);
lc.setDigit(0, 5, thirdnum, false);
lc.setDigit(0, 4, fournum, false);
lc.setDigit(0, 3, fivenum, false);
lc.setDigit(0, 2, sixnum, false);
lc.setDigit(0, 1, sevennum, false);
lc.setDigit(0, 0, eightnum, false);
}
else {
if (countnumber > 9999) {
// firstnum = ((countnumber/10000000)%10);
// secondnum = countnumber/1000000%10;
// thirdnum = countnumber/100000%10;
fournum = countnumber / 10000 % 10;
fivenum = countnumber / 1000 % 10;
sixnum = countnumber / 100 % 10;
sevennum = countnumber / 10 % 10;
eightnum = countnumber % 10;
lc.setChar(0, 7, ' ', false);
lc.setChar(0, 6, ' ', false);
lc.setChar(0, 5, ' ', false);
lc.setDigit(0, 4, fournum, false);
lc.setDigit(0, 3, fivenum, false);
lc.setDigit(0, 2, sixnum, false);
lc.setDigit(0, 1, sevennum, false);
lc.setDigit(0, 0, eightnum, false);
}
else {
if (countnumber > 999) {
// firstnum = ((countnumber/10000000)%10);
// secondnum = countnumber/1000000%10;
// thirdnum = countnumber/100000%10;
// fournum = countnumber/10000%10;
fivenum = countnumber / 1000 % 10;
sixnum = countnumber / 100 % 10;
sevennum = countnumber / 10 % 10;
eightnum = countnumber % 10;
lc.setChar(0, 7, ' ', false);
lc.setChar(0, 6, ' ', false);
lc.setChar(0, 5, ' ', false);
lc.setChar(0, 4, ' ', false);
lc.setDigit(0, 3, fivenum, false);
lc.setDigit(0, 2, sixnum, false);
lc.setDigit(0, 1, sevennum, false);
lc.setDigit(0, 0, eightnum, false);
}
else {
// firstnum = ((countnumber/10000000)%10);
// secondnum = countnumber/1000000%10;
// thirdnum = countnumber/100000%10;
// fournum = countnumber/10000%10;
// fivenum = countnumber/1000%10;
sixnum = countnumber / 100 % 10;
sevennum = countnumber / 10 % 10;
eightnum = countnumber % 10;
lc.setChar(0, 7, ' ', false);
lc.setChar(0, 6, ' ', false);
lc.setChar(0, 5, ' ', false);
lc.setChar(0, 4, ' ', false);
lc.setChar(0, 3, ' ', false);
lc.setDigit(0, 2, sixnum, false);
lc.setDigit(0, 1, sevennum, false);
lc.setDigit(0, 0, eightnum, false);
}
}
}
}
}
}
}