Ho un problema con un display 7 segmenti.
Devo rappresentare numeri lunghi diverse cifre (contenuti in variabili) ma visualizzarle con un unico display.
Ad esempio un numero come 78652 dovrebbe comparire come 7, poi 8, poi 6, poi 5, poi 2 (con intervalli di 1sec).
Non trovo come scomporre la variabile numerica in altre da poter esser rappresentate.
kitttri:
Ho un problema con un display 7 segmenti.
Devo rappresentare numeri lunghi diverse cifre (contenuti in variabili) ma visualizzarle con un unico display.
Ad esempio un numero come 78652 dovrebbe comparire come 7, poi 8, poi 6, poi 5, poi 2 (con intervalli di 1sec).
Non trovo come scomporre la variabile numerica in altre da poter esser rappresentate.
Grazie
Ciao, ti premetto che non sò programmare con Arduino quindi prendi tutto quello che dico con le pinze XD
Mi è capitato un problema del genere in un programma in C++, ho risolto utilizzando la divisione ed il modulo:
// Esercizio 2.28
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int main ()
{
int num; // numero di cinque cifre
int a, b, c, d, e; // Cifre separate
cout << "Inserire un numero di cinque cifre: ";
cin >> num;
e = num % 10;
d = num % 100;
d = d / 10;
c = num % 1000;
c = c / 100;
b = num % 10000;
b = b / 1000;
a = num / 10000;
cout << "\n" << a << " " << b << " " << c << " " << d << " " << e << endl;
return 0;
}
Consigli molto utili. Grazie
Il numero non è di lunghezza definita (ma al limite la posso fissare a 7 cifre).
Speravo ci fosse un comando per scomporre le variabili in blocchi.
Con il calcolo matematico proverò.
for (int i=0; i <= numerocaratteri + 1 ; i++)
{
numero.substring(i,i); // preleva parte della stringa che vuoi in questo caso un carattere alla volta
// http://arduino.cc/en/Tutorial/StringSubstring
//pezzo di codice per visualizzare a display in singolo numero
delay(1000);
}
fai un po’ di prove col serial.print per visualizzare i risultati corretti prima
ciao
Una soluzione alternativa è quella di fare un piccolo algoritmo che calcoli il modulo 10 del numero, poi dividerlo per 10 e continuare finché non resta solo un numero inferiore a 10:
prendi il numero
calcoli il modulo 10
stampi la cifra trovata
se il numero è >10, dividi per 10 e torni al punto 2)
stampi l’ultima cifra
Esempio:
4709
4709%10=9 → a video
4709/10=470
470%10=0 → a video
470/10=47
47%10=7 → a video
47/10=4 → a video
5 righe di codice che trattano un numero di lunghezza arbitraria