miércoles, 22 de junio de 2016

Panel luminoso de Matrices LED 8x8 con driver MAX7219


En este tutorial aprenderemos a controlar las matrices LED de 8×8 con Arduino, en concreto vamos a usar los módulos que llevan el driver MAX7219, y para controlarlos utilizaremos la librería “MaxMatrix.h”, que nos facilitarán enormemente el trabajo. Lo que haremos en cuestión, será mostrar un mensaje en forma de texto que se va a desplazar de derecha a izquierda (Scroll horizontal) a través de las 4 matrices LED 8x8 que conectaremos en cascada, repitiéndose constantemente. 

La Matriz LED de 8×8, está compuesta por 64 LED de 3mm, en color rojo. Internamente los LED, están montados con cátodo común dentro de un encapsulado sólido de fibra de vidrio para protegerles. Algunas de las principales características de las matrices LED 8x8 se describen a continuación: 

·         Voltaje de Trabajo: 4.7 -5.3 V
·         Tensión típica: 5 V
·         Consumo de corriente: 320mA
·         Corriente de trabajo máxima: 2A
·         Temperatura: 0 -50 °C
·         Temperatura de trabajo: 25 

El driver MAX7219 (de Maxim) que contiene cada módulo,  sirven para implementar una interfaz  SPI (Serial Peripheral Interface, que es básicamente un bus de comunicación a nivel de circuitos integrados en el que la transmisión de datos se realiza en serie, es decir un bit después de otro) en cada uno de ellos,  para que se puedan comunicar con nuestro Arduino exclusivamente por medio de 3 pines digitales de salida (DIN, CS y CLK), además de dos pines para la alimentación (+5V) y la masa (GND). A continuación se detallan sus principales características: 

·        Entrada y salida en serie, para necesitar menos pines.
·        Controla displays de 7 segmentos de hasta 8 dígitos, Bar graph displays (Barras de LED) y Matrices de 8×8 o de hasta 64 LED individuales.
·        Solo requiere una resistencia externa para los 64 LED.
·        Incluye decodificador BCD (No hay necesidad de dibujar matrices de caracteres, las lleva incluidas. Mayúsculas, minúsculas y hasta números y signos).
·        Se encarga del multiplexado de los caracteres y dígitos.
·        Incluye memoria de los caracteres.
·        Es compatible con interfaz SPI y QSPI.

Para conectar en cascada las 4 matrices LED 8x8 con driver MAX7219 (aunque por este método podríamos conectar hasta 8), que nos van a hacer falta para desarrollar este proyecto, es imprescindible conectar a nuestro Arduino la matriz LED 8x8 que se encuentra más a la derecha de todas, teniendo en cuenta que el mensaje de texto se va a mover hacia la izquierda. A continuación se muestra la relación de los pines a conectar:

Correspondencia de los pines entre nuestro Arduino y el driver MAX7219

Posteriormente necesitamos conectar las salidas del módulo situado más a la derecha (CLK, CS, DOUT, GND y VCC) a las entradas del siguiente (CLK, CS, DIN, GND y VCC) y así sucesivamente con los restantes módulos, hasta llegar al que esté situado más a la izquierda, el cual no necesita que sus salidas estén conectadas. Como en las matrices LED 8x8 con driver MAX7219 viene rotulado en la parte inferior la función de cada pin y cuales son de salida y cuáles de entrada, solo necesitaremos un poco de paciencia para poder realizar correctamente las conexiones. Un pequeño detalle a tener en cuenta es que el pin “DIN” es el correspondiente a la entrada de datos y el pin “DOUT” es el correspondiente a la salida de datos, con lo que tenemos una referencia a mayores para poder distinguir que grupo de pines son de entrada y cuáles de salida.


Conexión de las 4 matrices LED 8x8 con driver MAX7219

Cabe aclarar que debido a la existencia de infinidad de fabricantes de este tipo de módulos, nos podemos encontrar con el problema de que al adquirirlos, nos vengan sin soldar o que no tengan terminales de conexión en sus pines de E/S, por lo que tendremos que ingeniárnoslas para realizar las conexiones entre los módulos mediante pequeños cablecitos, un soldador, estaño y bastante paciencia, ya que precisamente es lo que a mí me ocurrió al adquirirlos a muy bajo precio en “China”, aunque viendo los resultados obtenidos, merece la pena ahorrarse un dinero aunque tengamos que desempolvar nuestras herramientas de soldadura.

Diferentes versiones de matriz LED 8x8 con driver MAX7219

Por último os comento que dentro de la programación podremos cambiar tanto el mensaje o mensajes de texto que queráis mostrar, como el brillo de los LEDS (si alimentamos el panel luminoso a través de nuestro Arduino es recomendable que esté en el nivel 1 para evitar fallos al subir el programa), el número de módulos conectados en cascada (máximo 8) o incluso la velocidad con la que se va a desplazar el texto, aunque para poder realizar todo esto es necesario recurrir al código del programa donde deberemos modificar las líneas de código necesarias, aunque no os preocupéis porque el código está comentado al detalle. Es muy importante subir el programa a nuestro Arduino sin tener alimentado el panel luminoso (pines +5V y GND), puesto que teniendo en cuenta que cada matriz LED 8x8 tiene un consumo aproximado de 350mA tendríamos un consumo total de unos 1400mA, un consumo excesivamente elevado para la salida USB de nuestro PC, lo que hará que al intentar subir el programa a nuestro Arduino, el puerto serie se nos desconecte dándonos un error en el IDE de Arduino. Después de subir el programa conectaremos nuevamente la alimentación del panel luminoso y procederemos a resetear nuestro Arduino para que los mensajes comiencen a deslizarse de derecha a izquierda a través de las matrices LED 8x8. (Es muy recomendable alimentar el panel luminoso con una fuente de alimentación de 5VDC para que esto no suceda).




Lista de Materiales:

·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         4 Matrices LED 8x8 con driver MAX7219.

·         Soldador de 30W y estaño (en el caso de que sea necesario).

·         Fuente de alimentación de 5VDC/3000mA (opcional).

·         Protoboard.

·         Cables de conexión.



Código del programa:





Video:

37 comentarios:

  1. Tengo un problema... resulta que sale el mensaje pero de manera vertical y no horizontal :(

    ResponderEliminar
    Respuestas
    1. Posiblemente hayas realizado mal las conexiones. Verifica el montaje según sale en la imagen. Saludos

      Eliminar
    2. Hola Mariano tengo el mismo problema que Cesar Castillo, copie todo como indicas pero las letras hacen barrido vertical. ¿Qué se puede hacer?.
      Gracias
      Saludos

      Eliminar
  2. Hola Mariano, Mi problema es que en la matriz que llegó de china van montados las cuatro matrices en un bloque, con una sola entrada. Cada matriz es solidaria con la siguiente no pudiéndose rotar. El problema es que los caracteres me salen girados 90º a la derecha en cada matriz. Si pudiese girarlas todas asunto arreglado pero ya digo que son solidarias. ¿Hay alguna forma de arreglarlo mediante software o me toca serrar cada matriz y luego soldar?. Gracias por tu atención-

    ResponderEliminar
    Respuestas
    1. A mí me pasó lo mismo y lo que hice fue modificar el hardware soltando las matrices y soldandolas nuevamente en la posición correcta para el software que tengo. Seguramente haya por la web algún código que te funcione sin realizar modificaciones en el hardware. Saludos

      Eliminar
    2. Hola chicos.
      Yo también soy un afortunado y tengo la misma placa.
      Lo habéis solucionado?
      Gracias

      Eliminar
    3. Hola a mi me paso lo mismo con una placa china pero buscando encontre otro programa que me servia y se soluciono el programa, solo es cosa de tener paciencia y buscar

      Eliminar
    4. Hola, marco antonio, podrías decirme que programa buscaste para solucionar el angulá de los mensajes en la matriz?

      Eliminar
  3. Pues siento decirte que no hay otra que tirar de sierra y de soldador. Eso sí, después de montarlos sobre un soporte para que queden juntos va de miedo.

    ResponderEliminar
  4. Pues lo intentaremos.Muchas gracias.
    He llegado a pensar en cambiar los códigos de las letras girandolas 90°

    ResponderEliminar
  5. Los modulos estan configurados de tal manera que las columnas con las que trabaja el integrado son perpendiculares a las conexiones, tal y como vienen montadas de China. La libreria que se usa aquí dibuja y desplaza los caracteres perpendicularment a las conexiones. NO hay muchas soluciones o se usa otra libreria o se sueldan de nuevo los leds.

    http://frightanic.com/iot/max7219-library-nodemcu-making/

    ResponderEliminar
    Respuestas
    1. Hola,,,verificar el enlace,se puede rotar caracteres y redefinir algunos porque estan en ruso.
      Es decir se puede utilizar la placa como viene sin desoldarla.
      En el enlace 7 esta el ino.Saludos
      https://www.youtube.com/watch?v=GfHsCDpe6q0

      Eliminar
  6. Hola, excelente proyecto, FELICIDADES

    Compre un modulo chino que trae pegados las 4 pantallas pero vienen invertidas, sabes como podria cambiar el codigo para que que el texto aparezca correctamente?

    ResponderEliminar
  7. mi arduino se apaga cuando quiero trabajar con 5 matrices que podría hacer?

    ResponderEliminar
    Respuestas
    1. Necesitas poner una fuente de poder externa que alimente a tu circuito, se esta cayendo por la cantidad de corriente.

      Eliminar
  8. Hola,,,verificar el enlace,se puede rotar caracteres y redefinir algunos porque estan en ruso.
    Es decir se puede utilizar la placa como viene sin desoldarla.
    En el enlace 7 esta el ino.Saludos
    https://www.youtube.com/watch?v=GfHsCDpe6q0

    ResponderEliminar
    Respuestas
    1. yo tengo una pregunta
      no se si me pueda ayudar diciendome de donde descargo el codigo que dice en el video

      Eliminar
    2. Dentro del POST tienes la descarga del código, justo antes del video. Saludos

      Eliminar
  9. hola el mensaje parece que sale pero no lo puedo apreciar por que estan todo el modulo encendido ...como puedo hacer para que solo se encienda lo escrito y los demas leds queden apagados?

    ResponderEliminar
  10. hola buenas tardes.que pena pero tengo un problema .tengo arduino uno y cuando le cargo el programa me sale,error compilando para tarjeta arduino/genuino uno..de antemano muchas gracias que puedo hacer...

    ResponderEliminar
    Respuestas
    1. Instala mis librerías y solucionado. http://miarduinounotieneunblog.blogspot.com.es/2015/12/anadiendo-las-librerias.html?m=1

      Eliminar
  11. hola, mi pregunta es la sig. ¿si conecto 10 matrices en paralelo cual sera su amperaje? gracias por su atención

    ResponderEliminar
  12. hola, podrias realizar un tutorial para controlar led por led de la matriz 8x8 con el max, gracias

    ResponderEliminar
  13. Ahora mismo tengo otros proyectos en mente, aunque lo tendré en cuenta. Saludos

    ResponderEliminar
  14. gracias me funciono a la primera espero tengas exito te agradezco el apoyo

    ResponderEliminar
  15. me pueden pasar el diseño de la placa del circuito necesito hacerla

    ResponderEliminar
    Respuestas
    1. Yo no lo tengo porque he utilizado componentes que he adquirido por ebay sin mas.

      Eliminar
  16. Me salen la letras en modo espejo ya cambie el hardware lo desolde y cambie loa pines y funcionó y al cabo del tiempo le cargue otra librería y de ahí volvió a salir las letras en modo espejo que estara pasando

    ResponderEliminar
  17. Hola, al compilar el programa y subirlo a la placa arduino uno, se encienden solamente 4 leds en diferentes posiciones de la matriz nada más.... Podrían por favor decirme cual es mi error . Mil gracias

    ResponderEliminar
    Respuestas
    1. Revisa las conexiones ... sigue al pie de la letra todo lo descrito en el POST.

      Eliminar
  18. ¡Solucionado!

    Yo también tuve el mismo problema en el cual el texto sale Girado 90°.

    Solución:
    1. Descargar la librería MD_MAX72XX disponible a en el siguiente link
    https://github.com/MajicDesigns/MD_MAX72XX
    2. Agregue la librería ” MD_MAX72xx.h” si está trabajando en arduino simplemente adjuntado él .zip o búsquela directamente en la carpeta /scr
    3. Descargue todo el directorio desde la opción que da GIthub
    4. En las carpetas descargadas dentro del directorio /examples encontrara los ejemplos desde los más simples como “print text”
    5. En cualquiera de los ejemplo que decida usar busque en la siguiente línea:

    #define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
    Cambiela por:
    #define HARDWARE_TYPE MD_MAX72XX::FC16_HW

    Nota: “FC16_HW” hace referencia al tipo de Hardware o tarjeta que estas usando, yo compre la mía por vistronica.com ellos hacen referencia a esta página. Pero esta librería soporta los siguientes tipos de placa.

    PAROLA_HW, ///< Use the Parola style hardware modules.

    GENERIC_HW, ///< Use 'generic' style hardware modules commonly available.

    ICSTATION_HW, ///< Use ICStation style hardware module.

    FC16_HW ///< Use FC-16 style hardware module.

    ResponderEliminar
  19. como conaigo esas librerias no se encuentra para descargar en el id o que nombre estan

    ResponderEliminar
  20. hola a todos quería preguntar como se puede modificar o cambiar los led de una matrix7219 eso que vienen con la matrix 8x8 si se podra cambiar a led mas grandes normales y si se puede hacer de 8x6 como podria hacerlo?

    ResponderEliminar
  21. SE puede usar el arduino mega 2560 y en que pines se conecta gracias

    ResponderEliminar
  22. //Vcc - Vcc
    //Gnd - Gnd
    //Din - Mosi (Pin 11)en mega es 51
    //Cs - SS (Pin 10)en mega es 53
    //Clk - Sck (Pin 13)en mega es 52

    ResponderEliminar