← Todas las entradas Entrada de blog

Cómo usar una pantalla de 7 segmentos MAX7219 con Arduino

Viktoria Builds

Conecta un módulo de pantalla de 7 segmentos MAX7219 de 8 dígitos a un Arduino y muestra números y letras en minutos con la librería LedControl.

Ver en YouTube

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.

¿Te ha gustado este tutorial?

Apoya el canal en Patreon y obtén acceso anticipado a proyectos, build logs y mucho más.

Apoyar en Patreon →