Proyecto Interactivo: Navegación de Símbolos de El Juego del Calamar en Matriz LED con Pulsadores

¡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)ProtocoloNotas Importantes
VCCAlimentaciónUso de 5V.
GNDTierraConexión de referencia.
CS (Chip Select)SS para SPISelecciona el módulo
DIN (Data In)MOSI para SPIEntrada de datos.
CLK (Clock)SCK para SPSeñal de reloj

🔨Componentes

ComponenteCantidadEspecificaciónFunción
Placa Arduino1Arduino Uno, Nano, etc.Control de componentes(cerebro)
Matriz LED18×8LEDs para mostrar los símbolos
Módulo multiplexor1MAX7219Controlador de matriz LED con interfaz SPI
Botones2PushPara cambiar entre los símbolos
Resistencias210kΩPull-down para los botones
Cables de conexiónnUnir los componentes


🔌Conexiones

Conexión chip MAX7219

MAX7219 PinArduino Pin
VCC5v
GNDGND
DIND11
CSD10
CLKD13

Conexión de los botones(Configuración Pull-Down):

Arduino PinArduino Pin
5vPin 2 (con resistencia de 10kΩ a GND)
5vPin 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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Carrito de compra