MATRIX LED 8×8 MAX7219

Esta matrix esta constituida por 64 Leds, en 8 filas y 8 columnas de leds, multiplexado por el circuito integrado Max7219, el cual nos permite activar las columnas y filas, para así poder ver alguna figura, alguna letra, o desplazar algún texto dependiendo de la librería que estemos utilizando, pues se encuentran muchas librerías para este circuito integrado. en este post utilizaremos las siguientes librerías SPIMax72xxPanel y Adafruit_GFX.

¿Porque estas librerías?, por que la Max72xxPanel nos permite conectar varios displays horizontales y verticales, permitiendo realizar un panel mas grande de los acostumbrados, y Adafruit_GFX nos permite realizar muchas cosas creativas, podemos dibujar figuras de una manera muy fácil, cambiar la fuente de nuestro texto a mostrar o desplazar, cambiar el tamaño del texto, es muy versátil. y la SPI es necesaria para poder utilizar la Max72xxPanel, la Max72xxPanel se debe utilizar con la Adafruit_GFX, ya que para esto fue diseñada.

La librería SPI, activa los pines SPI y el protocolo de comunicación serial SPI, SPI significa Serial Peripheral Interface, traducido al español seria algo como Interfaz Periférica Serial, este protocolo de comunicación usado por los microcontroladores con otros dispositivo o otros microcontroladores. En este protocolo existe un dispositivo maestro (Master) que controlara los otros dispositivos esclavos (Slave), y nuestra arduino posee estos pines para dicha comunicación son:

  • MISO (Master in Slave Out): Pin por donde el esclavo le envía datos al maestro.
  • MOSI (Master Out Slave In):Pin por donde el maestro le envía datos al esclavo.
  • SCK: Señal reloj serial
  • SS (Select Slave): Selector de esclavo

ya teniendo conocimiento del SPI, conectamos nuestra matrix a nuestro Arduino:

Esta matrix tiene 10 pines, 5 pines en el extremo superior y otros 5 en el extremo inferior, los del extremo superior hacen referencia a la salida y los inferiores los pines de entrada, donde:

Pines Inferiores: por donde se conecta el maestro y es donde se entra la información.

Pines Superiores: estos pines sirven para acoplar otras matrices en cascada, son los mismos pines la diferencia es el Dout, que significa salida de datos que irán conectados a los pines de entrada (inferiores) de otra matrix.

Conexión con Arduino:

La matrix del diagrama tiene los pines CLK Y CS en una posición a la imagen real, ya que en Fritzing se encuentra de esta manera.

Código Arduino para desplazar texto:

// Librerías
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>

// Variables
int CS = 10; // Pin Cs de Arduino
int DisplaysVerticales= 1;
int DisplaysHorizontales = 1;
String msg = "wwww.victruino.com"; // mensaje a mostrar
int w8 = 100; // velocidad de retardo
int espacio = 1;
int anchoL = 5 + espacio; // el ancho de la letra

//Se crea el objeto Max72xxPanel
Max72xxPanel M1 = Max72xxPanel(CS, DisplaysHorizontales, DisplaysVerticales);

void setup() {

  M1.setIntensity(7); // Configure el brillo de la pantalla de 0 a 15

//si usa mas de 1 matrix deberá tener lo siguiente en cuenta
// Posicion la matrix o las matrixes
//  M1.setPosition(0, 0, 0); 
//  M1.setPosition(1, 1, 0);
//  M1.setPosition(2, 2, 0); 
//  M1.setPosition(3, 3, 0); 
//  ...
//  Rotacion de las matrixes
//  M1.setRotation(0, 2); 
//  M1.setRotation(3, 2);
//  ...
}

void loop() {

  for ( int i = 0 ; i < anchoL * msg.length() + M1.width() - 1 - espacio; i++ ) {

    M1.fillScreen(LOW);

    int letra = i / anchoL;
    int x = (M1.width() - 1) - i % anchoL;
    int y = (M1.height() - 8) / 2; // centra el texto verticalmente

    while ( x + anchoL - espacio >= 0 && letra >= 0 ) {
      if ( letra < msg.length() ) {
        M1.drawChar(x, y, msg[letra], HIGH, LOW, 1);
      }

      letra--;
      x -= anchoL;
    }

    M1.write(); // Se envia el bmp para que se escriba en la matrix

    delay(w8);
  }
}

Espero que hayas aprendido, y que esta información te sea útil, ¡No olvides seguirme en las redes sociales, suscribirte a mi canal y compartir el conocimiento!

Deja un comentario

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