mostrar mas de un digito con leds 7 digitos 7219 [SOLUCIONADO]

hola buenas, pues me han llegado unos leds de 7 digitos con el integrado 7219 y he hecho pruebas y funcionan pero me gustaria saber si se puede escribir mas de un digito, quiero decir, con la libreria LedControl.h puedes usar esto:

dispositivo.setDigit (modulo, display, digito, punto);

pero el digito solo puede ser de 0 a 9, lo que me gustaria es si hay una funcion con la que yo le pueda meter una variable de mas de un digito y que me la muestre, si es 473 pues que el 4 vaya al display 0, el 7 al display 1 y el 3 al display 2.

Estudiaste los ejemplos de tu librería? En ellos seguramente tienes tu respuesta.

Nunomarquina:
hola buenas, pues me han llegado unos leds de 7 digitos con el integrado 7219 y he hecho pruebas y funcionan pero me gustaria saber si se puede escribir mas de un digito.

Creo que te refieres a los display de 7 segmentos, de varios digitos.

dispositivo.setDigit(modulo, display, digito, punto);

Nunomarquina:
pero el digito solo puede ser de 0 a 9, lo que me gustaria es si hay una función con la que yo le pueda meter una variable de mas de un digito y que me la muestre, si es 473 pues que el 4 vaya al display 0, el 7 al display 1 y el 3 al display 2.

Claro solo debes indicar donde debe ir cada numero y eso dependera de como este el cableado entre el MAX7219 y los display. Me refiero a que en los display se acostumbra numerar de izquierda a derecha, pero para el MAX el digito 0 (pin 2) es el menos significativo. Con un pequeño ejemplo lo sacas.

dispositivo.setDigit(0, 0, 3, false);
dispositivo.setDigit(0, 1, 7, false);
dispositivo.setDigit(0, 2, 4, false);

Revisa los métodos de LedControl

gracias por la ayuda pero he encontrado la solucion, y dejo aqui el codigo porque no he encontrado nada en español, lo que queria era mostrar una variable con un numero xxxx y que cada digito se mostrara automaticamente en su digito correspondiente.

#include "LedControl.h"    // Incluimos la libreria para el 7219
LedControl miled=LedControl(MAX7219DIN,MAX7219CLK,MAX7219CS,1);    // El ultimo numero representa cuantos 7219 tenemos en cascada, se pueden conectar varios por el mismo pin en cascada

int MAX7219DIN = 10;    // Pin digital donde estara conectado el Data in del 7219
int MAX7219CLK = 12;    // Pin digital donde estara conectado el CLK del 7219
int MAX7219CS = 11;    // Pin digital donde estara conectado el CS del 7219
int contador =0;

void setup() {
  miled.shutdown(0,false);    // Activamos los leds y apagamos el modo ahorro energia
  miled.setIntensity(0,8);    // Establecemos el brillo de los leds, puede ir de 0 a 15
  miled.clearDisplay(0);    // Dejamos los leds apagados
}

void loop() {
  contador++;
  
  unsigned long t = 12345678;  // aqui va el numero que deseamos mostrar, tambien podemos meter una variable, comentar esta linea para mostrar el contador
  //unsigned long t = contador;  // ejemplo de un contador sencillo que se ira mostrando en el led, descomentar esta linea para mostrar el contador
 
    int digitOne =    (t%10);
    int digitTwo =    (t/10)%10;
    int digitThree =  (t/100)%10;
    int digitFour =   (t/1000)%10;
    int digitFive =   (t/10000)%10;
    int digitSix =    (t/100000)%10;
    int digitSeven=   (t/1000000)%10;
    int digitEight =  (t/10000000)%10;

    //MSB digitEight, LSB digitOne

    miled.setDigit(0,7,digitEight,false);
    miled.setDigit(0,6,digitSeven,false);
    miled.setDigit(0,5,digitSix,false);
    miled.setDigit(0,4,digitFive,false);
    miled.setDigit(0,3,digitFour,false);
    miled.setDigit(0,2,digitThree,false);
    miled.setDigit(0,1,digitTwo,false);
    miled.setDigit(0,0,digitOne,false);  
}

La página de tu librería link

Y esta es la parte que corresponde a los digitos que ya lograste

Print numbers on a 7-Segment display
The most common use of 7-segment displays is to print numbers. The LedControl library has a function that simply takes an argument of type byte and prints the corresponding digit on the specified column. Valid values for the digit are from 0 to 15 to allow displaying hex values . Values greater than 15 (or negative values) are silently discarded. The function also provides an argumment to switch decimal point on the column on or off.

Here is a code excerpt that prints an int value (-999..999) on a display with 4 digits.

void printNumber(int v) {  

int ones;  
   int tens;  
   int hundreds;

boolean negative=false;

if(v < -999 || v > 999)  
       return;  
   if(v<0) {  
       negative=true;
       v=v*-1;  
   }
   ones=v%10;  
   v=v/10;  
   tens=v%10;  
   v=v/10; hundreds=v;  
   if(negative) {  
       //print character '-' in the leftmost column  
       lc.setChar(0,3,'-',false);  }
   else {
       //print a blank in the sign column  
       lc.setChar(0,3,' ',false);  
   }  
   //Now print the number digit by digit
   lc.setDigit(0,2,(byte)hundreds,false);
   lc.setDigit(0,1,(byte)tens,false);
   lc.setDigit(0,0,(byte)ones,false);
}



The prototype for the function:



/* Display a (hexadecimal) digit on a 7-Segment Display

  • Params:
  • addr   address of the display
  • digit  the position of the digit on the display (0..7)
  • value  the value to be displayed. (0x00..0x0F)
  • dp     sets the decimal point.  
    */  
    void setDigit(int addr, int digit, byte value, boolean dp);
    The digit-argument must be in the range 0..7 because the MAX72XX can control up to eight digits on a 7-segment display.