¡Adéntrate en el fascinante mundo de la electrónica y la programación con este proyecto que fusiona la popularidad de la serie “El Juego del Calamar” (Squid Game) con la versatilidad de Arduino! Utilizaremos el chip multiplexor MAX7219 y una matriz de LEDs de 8×8 para desplegar los icónicos símbolos del juego: el círculo, el triángulo, el cuadrado y el enigmático paraguas (o la forma que lo representa). Este proyecto no solo es visualmente atractivo, sino que también sirve como una excelente introducción al manejo de displays de matrices de puntos y la comunicación serial SPI.
🔩Funcionamiento
En este proyecto, exploraremos cómo utilizar una matriz LED 8×8 controlada por el chip MAX7219 para mostrar los icónicos símbolos del popular juego del calamar: el cuadrado, el triángulo, el círculo y la sombrilla. A través de una interfaz sencilla con dos botones, el usuario podrá navegar entre los símbolos, visualizándolos uno a uno en la matriz. Este proyecto combina electrónica básica, programación en Arduino y diseño de patrones binarios, ideal para principiantes y entusiastas que buscan profundizar en el control de displays LED.
Matriz de LED 8×8
Una matriz de LED 8×8 es esencialmente una cuadrícula que contiene 64 diodos emisores de luz (LEDs) dispuestos en 8 filas y 8 columnas.
- Estructura: Está organizada de manera que cada LED está en la intersección de una fila y una columna. Para encender un LED específico, debe aplicarse voltaje a la fila y a la columna correspondientes.
- Multiplexado: Controlar 64 LEDs individualmente requeriría demasiados pines (16 pines, 8 para filas y 8 para columnas, para el control directo). Para reducir el cableado, estas matrices utilizan una técnica llamada multiplexado. Esto significa que solo una fila o columna está activa en un momento dado, y el display se escanea rápidamente, encendiendo y apagando los LEDs tan deprisa que el ojo humano percibe que todos están encendidos simultáneamente (gracias a la persistencia de la visión).
El Poder del Multiplexado
El chip MAX7219 se encarga de todo el tedioso trabajo de encender y apagar los LEDs a gran velocidad. En una matriz de 8×8, hay 64 LEDs. Sin el MAX7219, necesitarías 16 pines (8 filas y 8 columnas) y mucho código para gestionarlos. Gracias al multiplexado, el MAX7219 escanea las filas y columnas tan rápido (alrededor de 800 Hz) que la persistencia de la visión humana hace que parezca que todos los LEDs están encendidos simultáneamente y de forma continua. ¡Esto libera al Arduino para realizar otras tareas importantes!
El MAX7219 se comunica a través del protocolo SPI (Serial Peripheral Interface), que permite el control de hardware periférico usando solo tres líneas digitales estándar, independientemente del tamaño del display:
- DIN (Data In / MOSI): Flujo de datos que el Arduino envía al MAX7219 (serialización del patrón de 8 bits).
- CLK (Clock / SCK): Señal de reloj que sincroniza la transferencia de cada bit de datos.
- CS (Chip Select / SS): Habilita la lectura de datos por parte del MAX7219.
Este mecanismo asegura que, para actualizar completamente la matriz, el Arduino solo necesita enviar 16 bits de datos (8 bits para el registro de comando/dirección y 8 bits para el valor/datos) ocho veces (una por fila). El MAX7219 retiene esta información y se encarga del barrido de alta frecuencia (aproximadamente 800 Hz) para mantener la imagen constante.
PINES del módulo Matriz 8×8 (MAX7219)
| Pin módulo Matriz 8×8 (MAX7219) | Protocolo | Notas Importantes |
|---|---|---|
| VCC | Alimentación | Uso de 5V. |
| GND | Tierra | Conexión de referencia. |
| CS (Chip Select) | SS para SPI | Selecciona el módulo |
| DIN (Data In) | MOSI para SPI | Entrada de datos. |
| CLK (Clock) | SCK para SP | Señal de reloj |
🔨Componentes
| Componente | Cantidad | Especificación | Función |
|---|---|---|---|
| Placa Arduino | 1 | Arduino Uno, Nano, etc. | Control de componentes(cerebro) |
| Matriz LED | 1 | 8×8 | LEDs para mostrar los símbolos |
| Módulo multiplexor | 1 | MAX7219 | Controlador de matriz LED con interfaz SPI |
| Botones | 2 | Push | Para cambiar entre los símbolos |
| Resistencias | 2 | 10kΩ | Pull-down para los botones |
| Cables de conexión | n | Unir los componentes |
🔌Conexiones
Conexión chip MAX7219
| MAX7219 Pin | Arduino Pin |
|---|---|
| VCC | 5v |
| GND | GND |
| DIN | D11 |
| CS | D10 |
| CLK | D13 |
Conexión de los botones(Configuración Pull-Down):
| Arduino Pin | Arduino Pin |
|---|---|
| 5v | Pin 2 (con resistencia de 10kΩ a GND) |
| 5v | Pin 3 (con resistencia de 10kΩ a GND) |
Para asegurar una lectura digital estable, los pulsadores se conectan en configuración Pull-Down: un extremo a 5V, el otro extremo al Pin Digital (2 o 3) de Arduino y, crucialmente, una resistencia de 10kΩ entre ese mismo pin digital y GND. Esto garantiza que el pin digital lea un estado LOW cuando el botón está abierto y HIGH (5V) solo cuando es presionado.
0️⃣Código
El sistema se basa en un arreglo de patrones binarios que representan los símbolos. Cada símbolo se codifica como un arreglo de 8 bytes, donde cada byte representa una fila de la matriz LED. Al presionar los botones, el índice del símbolo se incrementa o decrementa, y el patrón correspondiente se envía al MAX7219 para ser mostrado.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | void displaySymbol(int index); const int DIN = 11; const int CS = 10; const int CLK = 13; LedControl lc = LedControl(DIN, CLK, CS, 4); const int btnNext = 2; const int btnPrev = 3; //cambia este numero para que los simmbolo salgan en la matriz que desees int numMatriz = 0; int currentSymbol = 0; const int totalSymbols = 4; byte symbols[4][8] = { // Cuadrado {B11111111, B10000001, B10000001, B10000001, B10000001, B10000001, B10000001, B11111111}, // Triángulo {B00000011, B0001111, B00111111, B11111111, B11111111, B00111111, B0001111, B00000011}, // Círculo {B00111100, B01000010, B10000001, B10000001, B10000001, B10000001, B01000010, B00111100}, // Sombrilla (simplificada) {B00010000, B00100000, B01110000, B11101111, B11101111, B01110000, B00100000, B00010000} }; void setup() { lc.shutdown(numMatriz, false); lc.setIntensity(numMatriz, 8); lc.clearDisplay(numMatriz); pinMode(btnNext, INPUT); pinMode(btnPrev, INPUT); displaySymbol(currentSymbol); } void loop() { if (digitalRead(btnNext) == HIGH) { currentSymbol = (currentSymbol + 1) % totalSymbols; displaySymbol(currentSymbol); delay(300); } if (digitalRead(btnPrev) == HIGH) { currentSymbol = (currentSymbol - 1 + totalSymbols) % totalSymbols; displaySymbol(currentSymbol); delay(300); } } void displaySymbol(int index) { for (int i = 0; i < 8; i++) { lc.setRow(numMatriz, i, symbols[index][i]); } } |
🖌️Diseños

🎬Videos
📑Conclusión
Este proyecto, que utiliza Arduino para gestionar la visualización de los símbolos de El Juego del Calamar en una matriz MAX7219 y controlarlos mediante dos pulsadores, se establece como una pieza fundamental para comprender la electrónica interactiva. No es solo un circuito funcional, sino una plataforma educativa que encapsula eficientemente múltiples conceptos de la ingeniería de sistemas embebidos.
La elección de la arquitectura es la principal conclusión técnica:
- Eficiencia del MAX7219: Se confirma que el MAX7219 es el eslabón crítico. Su uso del protocolo SPI minimizó el consumo de pines del microcontrolador (solo tres líneas de datos), preservando los recursos del Arduino. El chip se encarga del multiplexado de alta frecuencia, una tarea tediosa que, de otro modo, sobrecargaría el bucle principal (
loop()) del Arduino. - Diseño de I/O Robusto: La interfaz de entrada se robusteció con las resistencias Pull-Down y la implementación del software anti-rebote. Esto garantiza que el sistema sea resistente al ruido eléctrico, asegurando que cada interacción del usuario (pulsación de botón) se traduzca en un cambio de estado único y preciso.
En resumen, este proyecto ofrece una convergencia exitosa de hardware de bajo nivel (diodos LED, resistencias) y software de alto nivel (protocolo SPI, lógica de control de estados). Ha evolucionado de una simple demostración a un sistema de control interactivo (HMI) completo y modular, sentando las bases para proyectos más ambiciosos que requieran una visualización eficiente y un control de usuario intuitivo.

