Como usar una Matriz Led con Arduino Deja un comentario

En ciertas circunstancias tenemos que mostrar un pequeño mensaje o imagen de forma dinámica, una forma sencilla de hacerlo es usando una matriz led de 8×8 controlada por Arduino.

Descripción General de la Matriz Led:

Trabajar con matrices led es ahora muy sencillo gracias a este módulo.

Al trabajar con leds tarde o temprano desearemos realizar nuestra propia matriz led. Si bien es posible construir una matriz utilizando leds individuales, también podemos optar por una matriz de fábrica ahorrando mucho tiempo. De forma similar la circuitería necesaria para manejar nuestra matriz puede ser realizada a partir de transistores discretos o utilizar un integrado que funcionara como multiplexor  el mismo es el MAX7219.

Este módulo integra una matriz de leds de 8×8 y un chip MAX7219, lo que permite trabajar rápidamente con matrices led y utilizando solo 4 cables para la comunicación. Estos módulos se pueden conectar en cascada utilizando un solo bus SPI y mostrar textos o gráficos más grandes.

El integrado MAX7219 es magnífico pues permite controlar 64 leds de 5mm de forma independiente (o 8 digitos de 7-segmentos), incluye un decoder BCD, posee una memoria RAM estática interna de 8×8. Permite el control del brillo de forma digital y analógica. Solo necesita una resistencia externa para su funcionamiento. Se maneja tan sólo con 3 pines y es compatible con SPI™, QSPI™, y MICROWIRE™.

Gracias al Multiplexor  MAX7219 podemos controlar la matriz con dos cables en vez de un cable por led.

Los multiplexores son circuitos combinacionales con varias entradas y una única salida de datos. Están dotados de entradas de control capaces de seleccionar una, y solo una, de las entradas de datos para permitir su transmisión desde la entrada seleccionada hacia dicha salida.

ESPECIFICACIONES TÉCNICAS
Voltaje de Operación: 5V DC
Interfaz: SPI 4 cables.
Cátodo común.
Entrada y salida en serie, para necesitar menos pines.
Controla de Matrices de 8×8 o hasta 64 Leds individuales de 5mm.
Incluye decodificador BCD
Se encarga del multiplexado de los caracteres y dígitos.
Incluye memoria de los caracteres.
Color: Rojo
Dimensiones: 3.2cm x 3.2cm x 1.3cm

Lista de materiales necesarios:

  • Un Arduino UNO.
  • Una Matriz Led 8×8.
  • Unos Jumpers.
  • Una protoboard.

Conexiones 

El “Vcc”del la matriz a los “5v” del Arduino.

El “GND” de la matriz al “GND” del Arduino.

El “Cs” de la matriz al  “pin 10” del Arduino.

El “CLK” de la matriz al “pin 11” del Arduino.

El “DIN” de la matriz al “pin 12” del Arduino.

Función

Pin MAX7219

Descripción

Pin Arduino

LOAD o CS 12

Selección de dígito

10
CLK 13

Reloj

11
DIN 1

Entrada de datos

12
DOUT 25

Salida

 En este caso no lo usamos

Esquema de conexión de la matriz con el Arduino (click sobre la imagen para ampliar)

Código

Para realizar este proyecto necesitaremos descargar una librería que maneja la  Matriz Led:

https://github.com/shaai/Arduino_LED_matrix_sketch 

Este código imprime imagenes “Codigo A”, pero se pueden imprimir Letras con el segundo código presentado mas abajo.
Codigo A

#include "LedControlMS.h" 
 
 
 
LedControl matriz=LedControl(12,11,10,1); // Los numeros se refieren a que pin de arduino tienes en cada uno de los terminales
 
/* 12 para el DIN, 11 para el CLK, 10 para el CS y el 1 se refiere a la asignacion de la matriz*/ 
 
 
 
//Corazón pequeño
 
byte Corazon_datos[] = {
 
B00000000,
 
B01100110,
 
B11111111,
 
B11111111,
 
B01111110,
 
B00111100,
 
B00011000,
 
B00000000};
 
 
 // cara emoji
byte Cara_datos[] = 
 
{B00111100,
 
B01000010,
 
B10100101,
 
B10000001,
 
B10100101,
 
B10011001,
 
B01000010,
 
B00111100};
 
 
 //Saludo HI
byte Mensaje_datos[] = 
 
{B00000000,
 
B00000100,
 
B00000000,
 
B01010100,
 
B01110100,
 
B01010100,
 
B00000000,
 
B00000000};
 
 
 
void setup()
 
{
 
  // El numero que colocamos como argumento de la funcion se refiere a la direccion del decodificador
 
  matriz.shutdown(0,false);
 
  matriz.setIntensity(0,8);// La valores estan entre 1 y 15 
 
  matriz.clearDisplay(0);
 
  
 
}
 
void loop()
 
{
   
  RepresentarMatriz(Corazon_datos,2000); // llama método para mostrar Corazón
  delay(500);
  RepresentarMatriz(Cara_datos,2000);  // llama método para mostrar emoji
  delay(500);
  RepresentarMatriz(Mensaje_datos,2000); // llama método para mostrar HI 
  delay(500);
  matriz.clearDisplay(0);
 
}
 

// Definimos una funcion para representar las figuras
 
 
 
void RepresentarMatriz(byte *Datos,int espera) //Representa los bytes de datos para una matriz de 8x8 
 
{
 
  for (int i = 0; i < 8; i++)  
 
  {
 
    matriz.setColumn(0,i,Datos[7-i]);
 
  }
 
  delay(espera);
 
}

Como verán los unos de los vectores representan los led que se van a prender pueden jugar con los unos y realizar cualquier imagen . lo dejan un determinado tiempo con la instrucción.

delay (2000);   //Mostramos 2 segundo la imagen o letra

luego limpiamos la matriz con

matriz.clearDisplay(0);

y volvemos a imprimir la imgen que querramos. Ej Cara emoji

// cara emoji
byte Cara_datos[] = 
 
{B00111100,
 
B01000010,
 
B10100101,
 
B10000001,
 
B10100101,
 
B10011001,
 
B01000010,
 
B00111100};

Código B

Para imprimir un mensaje  se puede usar este Código ya que es mas eficiente.

#include "LedControlMS.h" 
 
 
 
LedControl matriz =LedControl(12,11,10,1); // Los numeros se refieren a que pin de arduino tienes en cada uno de los terminales
 
/* 12 para el DIN, 11 para el CLK, 10 para el CS y el 1 se refiere a la asignacion de la matriz*/ 
  
 
void setup()
 
{
 
  // El numero que colocamos como argumento de la funcion se refiere a la direccion del decodificador
 
  matriz.shutdown(0,false);
 
  matriz.setIntensity(0,8);// La valores estan entre 1 y 15 
 
  matriz.clearDisplay(0);
 
}
 
void loop()
 
{
 
  for (int row=0; row<8; row++)
 
  {
 
    for (int col=0; col<8; col++)
 
    {
 
      matriz.setLed(0,col,row,true); // 
 
      delay(25);
 
    }
 
  }
 
 
 
  for (int row=0; row<8; row++)
 
  {
 
    for (int col=0; col<8; col++)
 
    {
 
      matriz.setLed(0,col,row,false); 
 
      delay(25);
 
    }
 
  }
 
  delay(500);
 
  matriz.writeString(0,"Ditecno Digital");
 
  delay(1000);
 
}

donde la cadena a mostrar sera en la siguiente linea.

matriz.writeString(0,"Ditecno Digital"); // texto a mostrar en matriz

Saludos Ditecno Digital

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Enviar Whatsapp
Hola 👋
¿En qué podemos ayudarte?