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:
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.
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.
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.
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);
}
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.