Ir al contenido
← Volver a Formación Arduino Intermedio

14. Contador en 7 segmentos de 4 dígitos con MAX7219

Un display de 4 dígitos controlado con solo 3 cables gracias al chip MAX7219. Aprende SPI y multiplexado por hardware.

Dificultad: Intermedio · Tiempo: 60 min · Cerebro: Arduino Uno

🧰 Lista de materiales

Arduino Uno R3 (ATmega328P)
Arduino Uno R3 (ATmega328P)
Envía los dígitos por SPI
MAX7219CNG (driver display LED)
MAX7219CNG (driver display LED)
Controla el display con 3 pines
Display 7 segmentos 4 dígitos 5641AS
Display 7 segmentos 4 dígitos 5641AS
Display 4 dígitos 5641AS
Breadboard 830 puntos
Breadboard 830 puntos
Montaje
sin foto
Resistencias película metálica 1/4 W
Resistencia Rset (~10–33 kΩ)

🎯 Qué vas a aprender

En el proyecto 08 movías 7 pines para un solo dígito. Aquí el MAX7219 maneja hasta 8 dígitos usando solo 3 pines (DIN, CLK, CS) por el bus SPI, encargándose él del multiplexado y la corriente.

📚 Teoría: el MAX7219 y SPI

El MAX7219 es un driver de displays LED: recibe los datos en serie (SPI) y se ocupa de refrescar cada dígito muy rápido (multiplexado) para que el ojo los vea todos encendidos a la vez. Solo necesita una resistencia Rset para fijar el brillo máximo y un condensador de desacoplo.

SPI usa: DIN (datos), CLK (reloj) y CS/LOAD (selección). Es más rápido que I2C y muy común para displays y memorias.

NotaCablear el MAX7219 a un display genérico 5641AS requiere mapear SEG A–G/DP y DIG 0–3 según el datasheet del chip. Si tienes un módulo MAX7219 ya montado con su display, sáltate el cableado fino y conéctalo directamente.

🔌 Conexiones (módulo MAX7219)

Pin móduloPin Arduino
VCC5 V
GNDGND
DIND11
CSD10
CLKD13

💻 Código completo

Instala la librería LedControl desde el Gestor de librerías.

// Contador 0000-9999 con MAX7219
#include 

// LedControl(DIN, CLK, CS, nº de chips)
LedControl lc = LedControl(11, 13, 10, 1);

int contador = 0;

void mostrar(int n) {
  for (int d = 0; d < 4; d++) {
    int digito = n % 10;
    lc.setDigit(0, d, digito, false);
    n /= 10;
  }
}

void setup() {
  lc.shutdown(0, false);   // despierta el chip
  lc.setIntensity(0, 8);   // brillo 0..15
  lc.clearDisplay(0);
}

void loop() {
  mostrar(contador);
  contador = (contador + 1) % 10000;
  delay(100);
}

🛠️ Montaje paso a paso

  1. Conecta el módulo MAX7219 (VCC, GND, DIN, CS, CLK) según la tabla.
  2. Instala LedControl y sube el sketch.
  3. Verás un contador rápido de 0000 a 9999.
  4. Ajusta setIntensity si deslumbra.

🧩 Resolución de problemas

SíntomaCausaSolución
Display apagadoFalta shutdown(false)Despierta el chip en setup
Dígitos al revésOrden de dígitosInvierte el índice en mostrar()
Parpadeo/ruidoSin condensador desacoploAñade 100 nF + 10 µF en VCC

🚀 Para ir más lejos

  • Convierte el contador en un reloj con un módulo RTC.
  • Usa el mismo MAX7219 para la matriz 8×8 (proyecto 15).
← Volver a Formación Arduino