El MAX7219 es un chip que controla hasta 8 dígitos de siete segmentos mediante una simple interfaz SPI de 3 hilos. Se consigue un módulo ya ensamblado — el chip, la pantalla, los condensadores de desacoplo, todo en una placa. Es una de las pantallas más sencillas de poner en marcha con Arduino porque la librería se encarga de todo el multiplexado.
El módulo tiene 10 pines en total, cinco en cada lado. Un lado es la entrada, el otro es la salida para encadenar varios módulos. Solo se necesita el lado de entrada: VCC, GND, DIN, LOAD y CLK.
Componentes
- Arduino (Uno, Nano o similar)
- Módulo de pantalla de 7 segmentos MAX7219 de 8 dígitos
- Cables dupont
Conexiones
Conectar el lado de entrada del módulo al Arduino de la siguiente manera:
- VCC → 5V
- GND → GND
- DIN → pin 12
- CLK → pin 11
- LOAD → pin 10
El cableado es directo. El módulo funciona a 5V y las líneas SPI van directamente a los pines digitales del Arduino.
Librería
Instalar la librería LedControl desde el gestor de librerías de Arduino. Buscar "LedControl" e instalar la de Eberhard Fahle. No se necesitan otras dependencias.
Sketch
Inicializar un objeto LedControl con los tres números de pin y el número de módulos encadenados. Luego activarlo, ajustar el brillo (0–15) y limpiar la pantalla. Para mostrar un dígito, usar setDigit — pasar el índice del dispositivo, la posición desde la derecha empezando en cero, el valor del dígito y si mostrar el punto decimal. Para letras, usar setChar. No todos los caracteres son posibles en una pantalla de 7 segmentos, pero H, E, L, P y algunos más funcionan bien.
#include "LedControl.h"
LedControl lc = LedControl(12, 11, 10, 1);
unsigned long delaytime = 500;
void setup() {
lc.shutdown(0, false);
lc.setIntensity(0, 8);
lc.clearDisplay(0);
}
void goofy() {
lc.setChar(0, 7, 'H', false);
lc.setChar(0, 6, 'E', false);
lc.setChar(0, 5, 'L', false);
lc.setChar(0, 4, 'P', false);
lc.setChar(0, 3, '.', false);
lc.setChar(0, 2, '.', false);
lc.setChar(0, 1, '.', false);
lc.setChar(0, 0, '.', false);
delay(delaytime + 1000);
lc.clearDisplay(0);
delay(delaytime * 3);
}
void loop() {
goofy();
}
Encadenamiento de módulos
El lado DOUT sirve para encadenar. Conectar DOUT del primer módulo al DIN del segundo, aumentar el número de dispositivos en el constructor de LedControl y dirigirse a cada módulo por su índice. Se pueden encadenar varios módulos usando los mismos tres pines del Arduino.
Resultado
Subir el sketch y funciona de inmediato. Los dígitos se iluminan, el punto decimal es controlable por dígito y el brillo se ajusta fácilmente en el código. El sketch completo está en mi GitHub y enlazado desde mi web. Si construyes algo con esto — un reloj, un contador, lo que sea — compártelo en el Discord.