sequenza numeri su display 7 segmenti

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

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;
}

Vedi se ti può essere utile :smiley:

Ciao io per scomporre un numero in 3 cifre ho fatto così :

     ten_bat = ((ten_pin / 1000)*(1000 + 3000));       // Calcolo Tensione Ingresso Partitore

      Cifra1 = int (ten_bat / 10);
      Cifra2 = int ( int (ten_bat) - ( (int (ten_bat) / 10) * 10 ));
      Cifra3 = int (ten_bat * 10) - ( int (ten_bat) * 10 );

la variabile ten_bat è dichiarata come float, mentre le variabili Cifra1, Cifra2 e Cifra3 sono dichiarate come byte, spero ti sia utile.

Ciao.

spero

ma il tuo numero è sempre a 5 cifre o la lunghezza è indefinita? ciao

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ò.

io te la butto li visto che hai un numero a n cifre indefinite

prendere il tuo numero int e convertirlo in string
int a = 15487878;
String numero = String(a);
http://arduino.cc/en/Reference/StringConstructor

determinare quanti caratteri ha questa nuova stringa
numerocaratteri = numero.length();
http://arduino.cc/en/Reference/StringLength

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:

  1. prendi il numero
  2. calcoli il modulo 10
  3. stampi la cifra trovata
  4. se il numero è >10, dividi per 10 e torni al punto 2)
  5. 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