Controlar MAX7219 LED Matrix con ESP8266-12E
Utilizando el IDE de Arduino vamos a programar la placa de desarrollo LoLin, que lleva un módulo WiFi ESP8266-12E integrado (ideal para proyectos IoT), para controlar uno o varios módulos de display LED tipo matriz con el chip MAX7219.
Pero para empezar vamos a tener que instalar primero la librería MAX7219LedMatrix especialmente desarrollada para ser utilizada con el ESP8266.
La instalación es sencilla: Descargamos la librería en formato ZIP desde el GitHub https://github.com/squix78/MAX7219LedMatrix y la añadimos a nuestro IDE:
Esta librería por defecto ya tiene definido una serie de pines que tenemos que respetar (a parte de la alimentación VCC y GND):
- DIN al pin GPIO13 o D7 en la placa LoLin
- CLK al pin GPIO14 o D5 en la placa LoLin
Para no perderse mejor seguir este esquema cómo referencia de la placa de desarrollo LoLin:
Luego hay una serie de parámetros que tenemos que definir desde el código:
#define NUMBER_OF_DEVICES 3
#define CS_PIN 2
NUMBER_OF_DEVICES
: Indicaremos cuantas matrices LED vamos a utilizar, en mi ejemplo voy a utilizar 3CS_PIN
: A diferencia de los pines DIN y CLK el CS puede ser definido donde queramos, yo he escogido el "pin 2", que equivale al GPIO2 o D4 en la placa LoLin
Detalle de cómo lo he conectado a mi placa LoLin (D4, D5, D7, G(GND), 3V):
El código de ejemplo que os propongo es bastante sencillo: una serie de textos que irán de derecha a izquierda.
#include <SPI.h>
#include "LedMatrix.h"
#define NUMBER_OF_DEVICES 3
#define CS_PIN 2
LedMatrix ledMatrix = LedMatrix(NUMBER_OF_DEVICES, CS_PIN);
int x = 0;
void setup() {
ledMatrix.init();
ledMatrix.setText("akirasan");
ledMatrix.setNextText(";)");
}
void loop() {
ledMatrix.clear();
ledMatrix.scrollTextLeft();
ledMatrix.drawText();
ledMatrix.commit();
delay(50);
x=x+1;
if (x == 200) {
ledMatrix.setNextText("MAX7219 + ESP8266");
}
}
El código cómo siempre, está disponible en mi canal de GitHub.
Cómo he comentado he utilizado tres módulos de matrices LED con el MAX7219 enlazados secuencialmente:
La librería tiene una serie de métodos sobre la clase LedMatrix
que nos permite hacer bastantes cosas, veamos por ejemplo algunos de los métodos que hemos utilizado en el código anterior:
setText
: Especifica el texto actual.setNextText
: Especifica el siguiente texto a mostrar tras el scroll del texto actual.clear
: Borra el buffer.commit
: Vuelca todo el buffer a los displays.drawText
: Muestra el texto actual en el offset actual.
A parte la librería también tiene otros métodos interesantes cómo:
scrollTextRight()
: Realiza el scroll hacia el lado derecho.setPixel(byte x, byte y)
: Activa el pixel de la posición x,y.setIntensity(byte intensity)
: Define la intensidad de iluminación de todos los displays. El valor va de 0 a 15.
Veamos cómo funciona con vídeo de ejemplo, donde utilizo tres displays:
Bien, pues ahora que tenemos un módulo ESP8266 conectado a una serie de displays es hora de pensar en alguna aplicación práctica, cómo por ejemplo conectar el módulo ESP8266 a nuestra WiFi y enviarle mensajes para que los muestre por los displays.