Código de búsqueda

Matriz LED 8x8 usando un módulo Arduino MAX7219

Matriz LED 8x8 usando un módulo Arduino MAX7219

En este tutorial, aprenderemos a controlar una matriz de LED 8x8 utilizando un módulo MAX7219 con un Arduino. El MAX7219 simplifica el control de múltiples LED, permitiéndonos mostrar caracteres y patrones fácilmente. Al final de este proyecto, podrás mostrar la palabra "ROBOJAX" en la matriz.

Para lograr esto, utilizaremos la biblioteca LedControl, que está diseñada específicamente para interactuar con el MAX7219. Esta biblioteca nos permite enviar datos a la matriz de LED con un esfuerzo mínimo. Si deseas una comprensión más clara del cableado y el código, asegúrate de revisar el video asociado (en el video a las 0:30).

Hardware Explicado

Los componentes principales de este proyecto incluyen el módulo MAX7219 y la matriz de LED 8x8. El MAX7219 es un circuito integrado que gestiona la visualización de los LED, manejando las señales de comunicación y control del Arduino. Utiliza una interfaz serial, lo que significa que podemos controlar muchos LED con solo unos pocos pines del Arduino.

La matriz LED 8x8 consta de 64 LED individuales dispuestos en una cuadrícula. Cada LED se puede encender o apagar enviando los comandos apropiados a través del MAX7219. Esto permite mostrar varios caracteres y gráficos en la matriz.

Detalles de la hoja de datos

FabricanteMaxim Integrated
Número de parteMAX7219
Voltaje de lógica/IO3.3V a 5.5V
Tensión de alimentación4.0V a 5.5V
Corriente de salida (por canal)40 mA máx
Corriente de pico (por canal)100 mA máx
Orientación sobre la frecuencia PWM100 Hz
Umbrales de lógica de entrada2.0V (alto) / 0.8V (bajo)
Caída de tensión / RDS(on)/ saturación0.2V típico.
Límites térmicos150°C
Paquete16-DIP
Notas / variantesConfiguración de ánodo común
  • Asegúrese de un suministro de energía adecuado (4.0V a 5.5V).
  • Utiliza resistencias limitadoras de corriente para cada LED para prevenir daños.
  • Mantén el cableado corto para evitar interferencias.
  • Monitorea la disipación de calor; utiliza un disipador si es necesario.
  • Verifica las conexiones de los pines para evitar malentendidos.

Instrucciones de cableado

Para conectar el MAX7219 al Arduino, conecta los siguientes pines:

  • Conectar elVCCpin del MAX7219 al 5V del Arduino.
  • Conectar elGNDconectar al tierra del Arduino.
  • Conectar elDINpin (Datos de entrada) al pin 12 de Arduino.
  • Conectar elCLKconectar (Reloj) al pin 11 de Arduino.
  • Conectar elCSpin (Selección de Chip) al pin 10 de Arduino.

Asegúrate de verificar que todas las conexiones estén seguras antes de encender el circuito. El cableado es sencillo, pero si encuentras problemas, revisa las conexiones cuidadosamente (en el video a las 1:45).

Ejemplos de código y guía paso a paso

En el código, comenzamos incluyendo la biblioteca LedControl, que es esencial para comunicarse con el MAX7219. El siguiente fragmento inicializa el objeto LedControl:

LedControl lc=LedControl(12,11,10,1);

Esta línea establece el pin de datos, el pin de reloj, el pin de selección de chip y el número de dispositivos (1, en este caso). A continuación, en elsetup()función, despertamos el MAX7219 y ajustamos la intensidad de la pantalla:

lc.shutdown(0,false);
lc.setIntensity(0,8);
lc.clearDisplay(0);

Esto asegura que la pantalla esté activa y lista para mostrar caracteres. La función principal que impulsa la pantalla eswriteArduinoOnMatrix(), que enciende secuencialmente las filas de la matriz para mostrar letras.

Demostración / Qué Esperar

Una vez que todo esté cableado y el código esté cargado, la matriz de LED debería mostrar la palabra "ROBOJAX". Si la pantalla no funciona, verifica problemas como conexiones sueltas o asignaciones de pines incorrectas. Además, asegúrate de que la fuente de alimentación sea adecuada (en el video a las 2:30).

Capítulos

  • Introducción (0:00)
  • Descripción general del hardware (0:30)
  • Instrucciones de cableado (1:45)
  • Recorrido del código (2:15)
  • Demostración (3:00)
4-8x8 LED matrix using a MAX7219 Arduino module
Idioma: C++
/*
 * Este video te muestra cómo usar el módulo MAX7219 con una matriz LED de 8x8 para mostrar texto o cualquier carácter en el LED.
 * Ver video de YouTube: https://youtu.be/AAiDwBKs9uE
 * 
 * Escrito por Ahmad Shamshiri para Robojax.com
 * el 26 de febrero de 2017 en Ajax, Ontario, Canadá
 * Obtén este código y otros códigos para Arduino desde Robojax.com
 * Aprende Arduino paso a paso en un curso estructurado con todos los materiales, diagramas de conexión y bibliotecas
 * todo en un solo lugar.
 * 
 * Obtén acceso anticipado a mis videos a través de Patreon y que tu nombre sea mencionado al final de cada
 * video que publico en YouTube aquí: http://robojax.com/L/?id=63 (mira hasta el final de este video para ver la lista de mis Patrocinadores)
 * 
 * O haz una donación usando PayPal http://robojax.com/L/?id=64
 * 
 * Este código se proporciona "TAL CUAL" sin garantía ni responsabilidad. Libre de uso siempre que mantengas esta nota intacta.
 * Este código ha sido descargado de Robojax.com
 * Este programa es software libre: puedes redistribuirlo y/o modificarlo
 * bajo los términos de la Licencia Pública General GNU publicada por
 * la Free Software Foundation, ya sea la versión 3 de la Licencia, o
 * (a tu elección) cualquier versión posterior.
 * 
 * Este programa se distribuye con la esperanza de que sea útil,
 * pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
 * COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulta la
 * Licencia Pública General GNU para más detalles.
 * 
 * Deberías haber recibido una copia de la Licencia Pública General GNU
 * junto con este programa. Si no, visita <https://www.gnu.org/licenses/>.
 * 
 * 
 * // Siempre debemos incluir la biblioteca
 * // Basado en un proyecto publicado en https://github.com/wayoda/LedControl
 */
#include "LedControl.h"

/*
 * Ahora necesitamos un LedControl para trabajar.
 *   // Personalizado para RoboJax.com el 26 de febrero de 2017 en Ajax, Ontario, Canadá.
 * **** Es probable que estos números de pin no funcionen con tu hardware *****
 *   el pin 12 está conectado a DataIn
 *   el pin 11 está conectado a CLK
 *   el pin 10 está conectado a CS
 *   Solo tenemos un único MAX72XX.
 */
 LedControl lc=LedControl(12,11,10,1);

/*
 * Siempre esperamos un poco entre actualizaciones de la pantalla */
 *  unsigned long tiempoDeRetardo=600;
 *  
 *  void setup() {
 *    /*
 *     El MAX72XX está en modo de ahorro de energía al iniciar,
 *     tenemos que hacer una llamada de activación
 */
   lc.shutdown(0,false);
/*
 * Establece el brillo a un valor medio */
 *    lc.setIntensity(0,8);
 *    /* y limpia la pantalla
 */
   lc.clearDisplay(0);
 }

/*
 * Este método mostrará los caracteres de la palabra "Arduino" uno tras otro en la matriz. (se necesitan al menos 5x7 LEDs para ver los caracteres completos)
 */
 void writeArduinoOnMatrix() {
/*
 * Aquí están los datos para los caracteres */
 * 
 *    // K
 *    byte R[8]={B11111100,B10000100,B10000100,B11111000,B10100000,B10010000,B10001000,B10000100};
 *    byte O[8]={B00011000,B00100100,B01000010,B01000010,B01000010,B01000010,B00100100,B00011000};  
 *    byte B[8]={B11111100,B10000100,B10000100,B11111000,B10001000,B10000100,B10000100,B11111100};
 *    byte J[8]={B00011110,B00000100,B00000100,B00000100,B10000100,B10000100,B01000100,B00111000};
 *    byte A[8]={B00111000,B01000100,B10000010,B11111110,B10000010,B10000010,B10000010,B10000010};     
 *    byte X[8]={ B10000001,B01000010,B00100100,B00011000,B00011000,B00100100,B01000010,B10000001};
 *    byte amor[8]={ B00000000,B01100110,B10011001,B10011001,B10000001,B01000010,B00100100,B00011000};  
 * 
 *  
 *    /* Letra R
 */
   for (int i=0; i<8; i++){
   lc.setRow(0,i,R[i]);

   }

   delay(delaytime);
   for(int i=0; i<8; i++){
       lc.setRow(0,i,0); // esto es para blanco
   }
 // ////////////// FIN de la Letra R ///////

/*
 * Letra O */
 *    for (int i=0; i<8; i++){
 *    lc.setRow(0,i,O[i]);
 * 
 *    }
 *     
 *    delay(tiempodetardo);
 *    for(int i=0; i<8; i++){
 *        lc.setRow(0,i,0);// esto es para espacio en blanco
 *    }  
 *  //////////////// FIN de Letra O ///////
 * 
 * 
 *    /* Letra B
 */
   for (int i=0; i<8; i++){
   lc.setRow(0,i,B[i]);

   }

   delay(delaytime);
   for(int i=0; i<8; i++){
       lc.setRow(0,i,0); // esto es para blanco
   }
 // ////////////// FIN de la Letra B ///////

/*
 * Letra O */
 *    for (int i=0; i<8; i++){
 *    lc.setRow(0,i,O[i]);
 * 
 *    }
 *     
 *    delay(tiempoderetardo);
 *    for(int i=0; i<8; i++){
 *        lc.setRow(0,i,0);// esto es para espacio en blanco
 *    }  
 *  //////////////// FIN de la Letra O ///////
 * 
 *    /* Letra J
 */
   for (int i=0; i<8; i++){
   lc.setRow(0,i,J[i]);

   }

   delay(delaytime);
   for(int i=0; i<8; i++){
       lc.setRow(0,i,0); // esto es para blanco
   }
 // ////////////// FIN de la Letra J ///////

/*
 * Letra A */
 *    for (int i=0; i<8; i++){
 *    lc.setRow(0,i,A[i]);
 * 
 *    }
 *     
 *    delay(delaytime);
 *    for(int i=0; i<8; i++){
 *        lc.setRow(0,i,0);// esto es para espacio en blanco
 *    }  
 *  //////////////// FIN de Letra A ///////
 * 
 *    /* Letra X
 */
   for (int i=0; i<8; i++){
   lc.setRow(0,i,X[i]);

   }

   delay(delaytime);
   for(int i=0; i<8; i++){
       lc.setRow(0,i,0); // esto es para blanco
   }
 // ////////////// FIN de la Letra X ///////



5-8x8 LED Matrix using a MAX7219 Arduino Module
Idioma: C++
/*
 * Este video te muestra cómo usar el módulo MAX7219 con una matriz LED de 8x8 para mostrar texto o cualquier carácter en el LED.
 * Mira el video de YouTube: https://youtu.be/AAiDwBKs9uE
 * 
 * Escrito por Ahmad S. para Robojax.com
 * el 26 de febrero de 2017 en Ajax, Ontario, Canadá
 * Se concede permiso para compartir este código, siempre que esta
 * nota se mantenga con el código.
 * Descargo de responsabilidad: Este código se proporciona "TAL CUAL" y solo con fines educativos.
 * 
 * /
 * 
 * // Siempre debemos incluir la biblioteca
 * // Basado en un proyecto publicado en https://github.com/wayoda/LedControl
 */
#include "LedControl.h"

/*
 * Ahora necesitamos un objeto LedControl para trabajar.
 *  // Personalizado para RoboJax.com el 26 de febrero de 2017 en Ajax, Ontario, Canadá.
 * **** Es probable que estos números de pin no funcionen con tu hardware *****
 *  el pin 1 está conectado a DataIn
 *  el pin 4 está conectado a CLK
 *  el pin 53 está conectado a CS
 *  Solo tenemos un único MAX72XX.
 */
LedControl lc=LedControl(1,4,53,1); // Esta línea determina si este código puede funcionar con Arduino Mega o Arduino UNO.

/*
 * Siempre esperamos un poco entre actualizaciones de la pantalla */
 * unsigned long tiempoDeRetardo = 600;
 * 
 * void setup() {
 *   /*
 *    El MAX72XX está en modo de ahorro de energía al iniciar,
 *    debemos hacer una llamada de activación
 */
  lc.shutdown(0,false);
/*
 * Establece el brillo a un valor medio */
 *   lc.setIntensity(0,8);
 *   /* y limpia la pantalla
 */
  lc.clearDisplay(0);
}

/*
 * Este método mostrará los caracteres de la palabra "Arduino" uno tras otro en la matriz. (se necesitan al menos 5x7 LEDs para ver los caracteres completos)
 */
void writeArduinoOnMatrix() {
/*
 * // K
 * byte R[8]={B11111100,B10000100,B10000100,B11111000,B10100000,B10010000,B10001000,B10000100};
 * byte O[8]={B00011000,B00100100,B01000010,B01000010,B01000010,B01000010,B00100100,B00011000};  
 * byte B[8]={B11111100,B10000100,B10000100,B11111000,B10001000,B10000100,B10000100,B11111100};
 * byte J[8]={B00011110,B00000100,B00000100,B00000100,B10000100,B10000100,B01000100,B00111000};
 * byte A[8]={B00111000,B01000100,B10000010,B11111110,B10000010,B10000010,B10000010,B10000010};     
 * byte X[8]={ B10000001,B01000010,B00100100,B00011000,B00011000,B00100100,B01000010,B10000001};
 * byte amor[8]={ B00000000,B01100110,B10011001,B10011001,B10000001,B01000010,B00100100,B00011000};
 * 
 * /* Letra R */
 */
  for (int i=0; i<8; i++){
  lc.setRow(0,i,R[i]);

  }

  delay(delaytime);
  for(int i=0; i<8; i++){
      lc.setRow(0,i,0); // esto es para blanco
  }
 // ///////////// FIN de la Letra R ///////

/*
 * Para la letra O */
 *   for (int i=0; i<8; i++){
 *     lc.setRow(0,i,O[i]);
 *   }
 *    
 *   delay(tiempodetardo);
 *   for(int i=0; i<8; i++){
 *       lc.setRow(0,i,0); // esto es para dejar en blanco
 *   }  
 * /////////////// FIN de la letra O ///////
 * 
 * 
 *   /* Letra B
 */
  for (int i=0; i<8; i++){
  lc.setRow(0,i,B[i]);

  }

  delay(delaytime);
  for(int i=0; i<8; i++){
      lc.setRow(0,i,0); // esto es para blanco
  }
 // ///////////// FIN de la Letra B ///////

/*
 * Letra O */
 *   for (int i=0; i<8; i++){
 *   lc.setRow(0,i,O[i]);
 *   }
 *    
 *   delay(tiempodetardo);
 *   for(int i=0; i<8; i++){
 *       lc.setRow(0,i,0); // esto es para dejar en blanco
 *   }  
 * /////////////// FIN de la Letra O ///////
 * 
 *   /* Letra J
 */
  for (int i=0; i<8; i++){
  lc.setRow(0,i,J[i]);

  }

  delay(delaytime);
  for(int i=0; i<8; i++){
      lc.setRow(0,i,0); // esto es para blanco
  }
 // ///////////// FIN de la Letra J ///////

/*
 * Letra A */
 *   for (int i=0; i<8; i++){
 *   lc.setRow(0,i,A[i]);
 * 
 *   }
 *    
 *   delay(delaytime);
 *   for(int i=0; i<8; i++){
 *       lc.setRow(0,i,0);// esto es para espacio en blanco
 *   }  
 * /////////////// FIN de la Letra A ///////
 * 
 *   /* Letra X
 */
  for (int i=0; i<8; i++){
  lc.setRow(0,i,X[i]);

  }

  delay(delaytime);
  for(int i=0; i<8; i++){
      lc.setRow(0,i,0); // esto es para blanco
  }
 // ///////////// FIN de la Letra X ///////



Archivos📁

No hay archivos disponibles.