▷ Control de Matriz LED 8x8 con Módulo RF y Arduino - Proyecto Práctico

En este proyecto práctico aprenderás a controlar una matriz LED 8x8 mediante un módulo de radiofrecuencia y Arduino. El sistema muestra diferentes frases según el botón que se presione en el control remoto.

Funcionalidad del proyecto

El sistema responde a los comandos del control remoto de la siguiente manera:

  • Tecla B: Muestra la frase "HOLA MUNDO"
  • Tecla D: Muestra la frase "HELLO WORLD"
  • Tecla C: Limpia la matriz y detiene la visualización

Las frases continúan desplazándose hasta que se presiona la tecla C, momento en el que la matriz se apagará hasta que se seleccione una nueva opción.

💡 Nota: Para entender completamente el funcionamiento del módulo de radiofrecuencia, te recomendamos visitar nuestra guía detallada del módulo receptor YK04.

Montaje del proyecto

Montaje completo del proyecto con matriz LED 8x8, Arduino y módulo RF

Diagrama de conexiones

Conexiones del Arduino al Módulo MAX7219:

  • Pin 10 → CLK del MAX7219
  • Pin 9 → CS del MAX7219
  • Pin 8 → DIN del MAX7219
  • GND → GND
  • 5V → VCC

Conexiones del Módulo RF:

  • Pin D0 → A0 (para tecla B)
  • Pin D1 → A1 (para tecla D)
  • Pin D3 → A2 (para tecla C)
  • GND → GND
  • 5V → VCC

Código Arduino

El siguiente código utiliza la librería MaxMatrix para controlar la matriz LED. Asegúrate de descargarla e instalarla en tu IDE Arduino.

Código completo y documentado aqui
#include <MaxMatrix.h>// Librería para controlar matrices MAX7219

// Definición de caracteres para la matriz (omitido por brevedad)
PROGMEM unsigned char const CH[] = {
  // ... caracteres definidos aquí
};

int data = 8;    // DIN pin del modulo MAX7219
int load = 9;    // CS pin del modulo MAX7219
int clock = 10;  // CLK pin del modulo MAX7219

int numeroDeMatrices = 1;  // Cambia este valor según el número de matrices

MaxMatrix m(data, load, clock, numeroDeMatrices);  // Objeto para controlar la matriz

byte buffer[10];

// Definición de pines para los botones del módulo RF
byte pulsadorMsg1 = A0;  // Tecla B - "HOLA MUNDO"
byte pulsadorMsg2 = A1;  // Tecla D - "HELLO WORLD"
byte pulsadorParar = A2; // Tecla C - Detener

String mensaje1 = "HOLA MUNDO ";  // Primera frase
String mensaje2 = "HELLO WORLD "; // Segunda frase

void setup() {
  pinMode(pulsadorMsg1, INPUT);
  pinMode(pulsadorMsg2, INPUT);
  pinMode(pulsadorParar, INPUT);
  m.init();            // Inicializa el módulo
  m.setIntensity(5);   // Intensidad de los LEDs (1-15)
  Serial.begin(9600);  // Inicializa comunicación serial
}

void loop() {
  m.clear();  // Limpia la matriz

  if (digitalRead(pulsadorMsg1)) {
    imprimirString(mensaje1, 90);  // Muestra "HOLA MUNDO"
  }

  if (digitalRead(pulsadorMsg2)) {
    imprimirString(mensaje2, 60);  // Muestra "HELLO WORLD"
  }
}

bool detener() {
  if (digitalRead(pulsadorParar)) {
    m.clear();  // Limpia la matriz
    return true;
  }
  return false;
}

void imprimirString(String texto, int velocidadDesplazamiento) {
  int i = 0;
  int longitudDeCadena = texto.length() - 1;
 
  while (!detener()) {
    char caracter = texto[i] - 32;
    memcpy_P(buffer, CH + 7 * caracter, 7);
    m.writeSprite(numeroDeMatrices * 8, 0, buffer);
    m.setColumn(numeroDeMatrices * 8 + buffer[0], 0);

    for (int i = 0; i < buffer[0] + 1; i++) {
      delay(velocidadDesplazamiento);
      m.shiftLeft(false, false);
    }
   
    i++;
    if (i > longitudDeCadena) i = 0;  // Reinicia el índice
  }
}

Aplicaciones y extensiones del proyecto

Este proyecto puede ser la base para diversos desarrollos:

  • Sistemas de información con display inalámbrico
  • Menús interactivos para proyectos de automatización
  • Sistemas de notificación con visualización remota
  • Base para juegos simples con display matricial
💡 ¿Necesitas ayuda? Si tienes preguntas sobre este proyecto o quieres compartir tus modificaciones, déjanos un comentario. ¡Nos encantaría ver tus creaciones!

0/Post a Comment/Comments