Diferencia entre revisiones de «LedControl»
De ArduWiki
(→Ejemplo 1) |
(→Ejemplo 1) |
||
(No se muestran 10 ediciones intermedias del mismo usuario) | |||
Línea 1: | Línea 1: | ||
== Descripción == | == Descripción == | ||
− | La libreria [https://github.com/wayoda/LedControl LedControl.h] de Eberhard Fahle para trabajar con MAX7219 o MAX7221 que maneja display 7 segmentos de matriz de LED 8x8 | + | La libreria [https://github.com/wayoda/LedControl LedControl.h] de Eberhard Fahle para trabajar con MAX7219 o MAX7221 que maneja display 7 segmentos de catodo comun o matriz de LED 8x8. |
== Sintaxis == | == Sintaxis == | ||
− | == | + | <pre> |
+ | #include <LedControl.h> | ||
+ | LedControl lc = LedControl(DIN,CLK,CS,n); | ||
+ | </pre> | ||
+ | |||
+ | == Parámetros == | ||
+ | ;DIN:Entrada de datos (MOSI) | ||
+ | ;CLK:Reloj (CSK) | ||
+ | ;CS:Selector de chip (SS) | ||
+ | ;n:Numero del MAX (0~7) | ||
== Métodos == | == Métodos == | ||
Línea 32: | Línea 41: | ||
== Comentarios == | == Comentarios == | ||
+ | * Notese que al estar diseñado para cátodo común (CC) las salidas de cada dígito (que van al cátodo) son reforzadas (320 mA) mientras que los segmentos (que van al ánodo) son las imitadoras de corriente (max 40 mA) determinadas por Rset. Ademas gracias a la multiplexion solo un dígito esta prendido a la vez. | ||
+ | * Para poner en cascada hasta ocho (8) MAX7219 se hacen comunes CLK (13) y LOAD (12). La data para el primer MAX7219 se mete en DIN (1) y para el siguiente se extrae de DOUT (25). | ||
+ | * Cada CHIP puede manejar hasta 8 digitos en cuyo caso cada uno prendera 125 ms. Si usas menos digitos en un MAX sebe usar setScanLimit(0,n), si n=3 solo se activan 4 digitos y cada uno prenderia 167 ms. | ||
+ | * Es importante entender que Rset es el control de brillo analógico y el método setIntensity() es el control de brillo digital, mediante modulación de PWM o ancho de pulso (Duty Cycle) entre 1/32 y 31/32. Para eso debemos ver en las especificaciones de nuestro LED la corriente máxima y la tensión directa. Por ejemplo si mi LED tiene una Imax de 25 mA y una tensión directa de trabajo de 2V elegiré Rset = 28kΩ, como no es comercial le pondré 33kΩ. | ||
== Advertencias == | == Advertencias == | ||
+ | * Rset puede ser variable (lo que permite un control de brillo analógico) pero su valor minimo absoluto es 9K53. | ||
== Ejemplo 1 == | == Ejemplo 1 == | ||
+ | Conectamos un MAX7219 con un display de 4 digitos y 7 segmentos y mostramos un contador ascendente en cada digito por un segundo y luego la palabra HELP durante 3 segundos. | ||
+ | |||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
− | #include <LedControl.h> | + | #include <LedControl.h> |
LedControl lc = LedControl(12,11,10,1); //El 1 al final indica cuantos MAX en cascada hay. Máximo 8. | LedControl lc = LedControl(12,11,10,1); //El 1 al final indica cuantos MAX en cascada hay. Máximo 8. | ||
Línea 52: | Línea 68: | ||
void loop{ | void loop{ | ||
− | //Cuenta | + | //Cuenta |
− | for(byte n= | + | for (byte n=0, n<10, n++) { |
− | + | for (byte dig=0, dig<4; n++) { | |
− | + | //Muestra display | |
− | + | lc.setDigit(0, dig, n, false); | |
− | + | delay(1000); | |
+ | } | ||
} | } | ||
lc.setChar(0,0,'H',false); | lc.setChar(0,0,'H',false); | ||
Línea 65: | Línea 82: | ||
delay(1000); | delay(1000); | ||
//Apaga display | //Apaga display | ||
− | lc. | + | lc.shutdown(0, true); |
lc.clearDisplay(0); | lc.clearDisplay(0); | ||
delay(3000); | delay(3000); | ||
//Prende display | //Prende display | ||
− | lc. | + | lc.shutdown(0, false); |
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Línea 78: | Línea 95: | ||
== Referencias == | == Referencias == | ||
* [https://www.arduinolibraries.info/libraries All Libraries] | * [https://www.arduinolibraries.info/libraries All Libraries] | ||
+ | * [https://www.maximintegrated.com/en/app-notes/index.mvp/id/1196 Using the MAX7219/7221 to drive higher voltage or current] - Maxim | ||
+ | * [https://www.prometec.net/8x8-max7219/ Matriz LED 8x8 con MAX7219 y SPI] - Prometec | ||
+ | * [https://naylampmechatronics.com/luces-iluminacion/265-kit-matriz-led-max7219.html Kit matriz LED MAX7219] - Naylamp Mechatronics | ||
+ | * [https://www.luisllamas.es/matriz-led-arduino-max7219/ Encender una matriz LED con MAX7219] - Luis Llamas | ||
+ | * [https://www.youtube.com/watch?v=Gc77CG5-TWo Capitulo 49 - Display 7 segmentos con MAX7219 y multiplexacion] - Bitwise Ar | ||
[[Category:Librerias]] | [[Category:Librerias]] | ||
[[Category:Libreria LedControl]] | [[Category:Libreria LedControl]] |
Revisión actual del 01:14 12 dic 2019
Contenido
Descripción
La libreria LedControl.h de Eberhard Fahle para trabajar con MAX7219 o MAX7221 que maneja display 7 segmentos de catodo comun o matriz de LED 8x8.
Sintaxis
#include <LedControl.h> LedControl lc = LedControl(DIN,CLK,CS,n);
Parámetros
- DIN
- Entrada de datos (MOSI)
- CLK
- Reloj (CSK)
- CS
- Selector de chip (SS)
- n
- Numero del MAX (0~7)
Métodos
Método | Descripción | Ejemplo |
---|---|---|
lc.shutdown() | TRUE apaga, FALSE para operación normal. | lc.shutdown(0,false) |
lc.setIntensity() | Determina el brillo (0 a 15) | lc.setIntensity(0,4) |
lc.setScanLimit() | Numero de dígitos a usar 0~7 | lc.setScanLimit(0,3) |
lc.clearDisplay() | lc.clearDisplay(0) | |
lc.setDigit() | Muestra un digito decimal. addr,digit,valor,dp | lc.setDigit(0,dig,num,false) |
lc.setChar() | '0','1','2','3','4','5','6','7','8','9','0','A','b','c','d','E','F','H','L','P','.','-','_',' ' | lc.setChar(0,0'A?,false) |
lc.setLed() | addr,row,col,state (true=on) | lc.setLed(0,0,0,true) |
lc.setRow() | addr,row,value | lc.setRow(0,0,1) |
lc.setColumn() | addr,col,value | lc.setColumn(0,0,1) |
Comentarios
- Notese que al estar diseñado para cátodo común (CC) las salidas de cada dígito (que van al cátodo) son reforzadas (320 mA) mientras que los segmentos (que van al ánodo) son las imitadoras de corriente (max 40 mA) determinadas por Rset. Ademas gracias a la multiplexion solo un dígito esta prendido a la vez.
- Para poner en cascada hasta ocho (8) MAX7219 se hacen comunes CLK (13) y LOAD (12). La data para el primer MAX7219 se mete en DIN (1) y para el siguiente se extrae de DOUT (25).
- Cada CHIP puede manejar hasta 8 digitos en cuyo caso cada uno prendera 125 ms. Si usas menos digitos en un MAX sebe usar setScanLimit(0,n), si n=3 solo se activan 4 digitos y cada uno prenderia 167 ms.
- Es importante entender que Rset es el control de brillo analógico y el método setIntensity() es el control de brillo digital, mediante modulación de PWM o ancho de pulso (Duty Cycle) entre 1/32 y 31/32. Para eso debemos ver en las especificaciones de nuestro LED la corriente máxima y la tensión directa. Por ejemplo si mi LED tiene una Imax de 25 mA y una tensión directa de trabajo de 2V elegiré Rset = 28kΩ, como no es comercial le pondré 33kΩ.
Advertencias
- Rset puede ser variable (lo que permite un control de brillo analógico) pero su valor minimo absoluto es 9K53.
Ejemplo 1
Conectamos un MAX7219 con un display de 4 digitos y 7 segmentos y mostramos un contador ascendente en cada digito por un segundo y luego la palabra HELP durante 3 segundos.
#include <LedControl.h>
LedControl lc = LedControl(12,11,10,1); //El 1 al final indica cuantos MAX en cascada hay. Máximo 8.
void setup(){
//Despierta display
lc.shutdown(0,false);
//Pone brillo en medio
lc.setIntensity(0,8);
//Limita a solo 4 digitos
lc.setScanLimit(0,3);
//Limpia display
lc.clearDisplay(0);
}
void loop{
//Cuenta
for (byte n=0, n<10, n++) {
for (byte dig=0, dig<4; n++) {
//Muestra display
lc.setDigit(0, dig, n, false);
delay(1000);
}
}
lc.setChar(0,0,'H',false);
lc.setChar(0,1,'E',false);
lc.setChar(0,2,'L',false);
lc.setChar(0,3,'P',false);
delay(1000);
//Apaga display
lc.shutdown(0, true);
lc.clearDisplay(0);
delay(3000);
//Prende display
lc.shutdown(0, false);
}
Vea también
Referencias
- All Libraries
- Using the MAX7219/7221 to drive higher voltage or current - Maxim
- Matriz LED 8x8 con MAX7219 y SPI - Prometec
- Kit matriz LED MAX7219 - Naylamp Mechatronics
- Encender una matriz LED con MAX7219 - Luis Llamas
- Capitulo 49 - Display 7 segmentos con MAX7219 y multiplexacion - Bitwise Ar