ESP32 - Matriz de LEDs

Las pantallas de matriz LED, también conocidas como pantallas LED o pantallas de matriz de puntos, son ampliamente utilizadas. En este tutorial, vamos a aprender:

Después de eso, puedes adaptar fácilmente el código para otras matrices LED, como la matriz LED de 16x8, la matriz LED de 64x8 ...

Acerca de la matriz LED

pantalla de matriz de LEDs

Hay muchos tipos de matrices LED. Con ESP32, la matriz LED basada en MAX7219 es ampliamente utilizada. La matriz LED basada en MAX7219 tiene las siguientes características:

  • Una unidad base de una matriz de LEDs es un bloque
  • Cada bloque tiene una matriz de 8×8 LEDs (64 LEDs) y un controlador MAX7219.
  • Existen dos formas populares de bloques: el módulo genérico y el módulo FC-16.
  • Una matriz de LEDs puede estar formada por un solo bloque o por múltiples bloques en una cadena en cascada.
  • Puedes comprar una matriz LED de múltiples bloques ya ensamblada (por ejemplo, 4 en 1, 8 en 1).
  • También puedes comprar varios bloques y conectarlos para formar una matriz LED del tamaño que desees.
  • Declararás el tamaño de la matriz LED que uses en el código del ESP32.

Esquema de pines

Pinout de la matriz de LEDs

Una matriz de LEDs está formada por uno o varios bloques. Cada bloque incluye dos grupos de pines:

  • Grupo de pines de entrada:
    • VCC: se conecta a 5V.
    • GND: se conecta a GND.
    • DIN es el pin de datos; conéctalo a cualquier pin digital del ESP32.
    • CS: Selección de chip, conéctalo a cualquier pin digital del ESP32.
    • CLK: Pin de reloj, conéctalo a cualquier pin digital del ESP32.
  • Grupo de pines de salida:
    • VCC: se conecta al VCC del grupo de pines de entrada en el siguiente módulo.
    • GND: se conecta a GND del grupo de pines de entrada en el siguiente módulo.
    • DOUT: Salida de datos, se conecta al pin DIN del grupo de pines de entrada del siguiente módulo.
    • CS: se conecta a la Selección de chip del grupo de pines de entrada en el siguiente módulo.
    • CLK: se conecta al CLK del grupo de pines de entrada en el siguiente módulo.

Diagrama de Cableado

Si la matriz de LEDs está hecha de un único bloque:

  • Conectar los grupos de pines de entrada al ESP32
  • Dejar sin conexión el grupo de pines de salida
Diagrama de cableado de la matriz LED 8x8 ESP32 FC-16

This image is created using Fritzing. Click to enlarge image

Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.

Diagrama de cableado genérico de matriz de LEDs 8x8 para ESP32

This image is created using Fritzing. Click to enlarge image

Si la matriz de LEDs está preconstruida en varios bloques:

  • Conecta los grupos de pines de entrada al ESP32
  • Deja el grupo de pines de salida sin conectar
Diagrama de cableado de la matriz LED para ESP32

This image is created using Fritzing. Click to enlarge image

Si la matriz LED está hecha de varios bloques por ti mismo:

  • Conecta los grupos de pines de entrada del primer bloque al ESP32
  • Conecta los grupos de pines de salida de cada bloque a los grupos de pines de entrada del siguiente bloque
  • Deja sin conectar el grupo de pines de salida del último bloque
Diagrama de cableado de la matriz LED 32x8 FC-16 para ESP32

This image is created using Fritzing. Click to enlarge image

Diagrama genérico de cableado de matriz LED 32x8 para ESP32

This image is created using Fritzing. Click to enlarge image

Debido a que la pantalla consume mucha corriente (hasta 1 A a brillo máximo):

  • No uses la alimentación del pin de 5V del ESP32.
  • En su lugar, utiliza una fuente de alimentación externa de 5V. El ESP32 y la matriz LED pueden compartir la alimentación de un adaptador de 5V.

Porque el ESP32 se conecta a la matriz de LEDs a través de pines SPI:

  • Pin GPIO18 (SCK) y GPIO23 (MOSI) en ESP32
  • El pin GPIO21 (CS) se puede cambiar a cualquier pin

Cómo programar para una matriz LED

No es fácil controlar la matriz de LEDs. Afortunadamente, hay bibliotecas disponibles para facilitarlo. A continuación se presenta un paso a paso sobre cómo escribir código para ESP32 para controlar la matriz de LEDs.

  • Incluir bibliotecas:
#include <MD_Parola.h> #include <MD_MAX72xx.h>
  • Especifique qué hardware se está utilizando: GENERIC_HW o FC16_HW.
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
  • Defina cuántos bloques LED se utilizan. Por ejemplo, una matriz LED 4 en 1 tiene 4 bloques.
#define MAX_DEVICES 4
  • Define el pin que se conecta al pin CS de la matriz LED. Por ejemplo, el pin GPIO21
#define CS_PIN 21
  • Crea una nueva instancia de la clase MD_Parola para la pantalla de matriz LED.
MD_Parola ledMatrix = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
  • Código en la función setup():
void setup() { ledMatrix.begin(); // initialize the object ledMatrix.setIntensity(0); // set the brightness of the LED matrix display (from 0 to 15) ledMatrix.displayClear(); // clear led matrix display }
  • Mostrar texto, número y efectos animados: ver la siguiente parte

ESP32 - Código de la Matriz de LEDs

El código a continuación es para una pantalla de matriz LED 32x8 FC-16 (4 bloques). Pero puedes adaptarlo fácilmente para 8x8, 16x8, 64x8...

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp32/esp32-led-matrix */ #include <MD_Parola.h> #include <MD_MAX72xx.h> #define HARDWARE_TYPE MD_MAX72XX::FC16_HW #define MAX_DEVICES 4 // 4 blocks #define CS_PIN 21 // create an instance of the MD_Parola class MD_Parola ledMatrix = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES); void setup() { ledMatrix.begin(); // initialize the LED Matrix ledMatrix.setIntensity(15); // set the brightness of the LED matrix display (from 0 to 15) ledMatrix.displayClear(); // clear LED matrix display } void loop() { ledMatrix.setTextAlignment(PA_LEFT); ledMatrix.print("Left"); // display text delay(2000); ledMatrix.setTextAlignment(PA_CENTER); ledMatrix.print("Center"); // display text delay(2000); ledMatrix.setTextAlignment(PA_RIGHT); ledMatrix.print("Right"); // display text delay(2000); ledMatrix.setTextAlignment(PA_CENTER); ledMatrix.setInvert(true); ledMatrix.print("Invert"); // display text inverted delay(2000); ledMatrix.setInvert(false); ledMatrix.print(1234); // display number delay(2000); }

Pasos R\u00e1pidos

  • Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
  • Realiza el cableado como en la imagen anterior.
  • Conecta la placa ESP32 a tu PC mediante un cable USB micro.
  • Abre Arduino IDE en tu PC.
  • Selecciona la placa ESP32 correcta (p. ej. ESP32 Dev Module) y el puerto COM.
  • Haz clic en el icono Libraries en la barra izquierda del IDE de Arduino.
  • Busca “MD_Parola”, luego encuentra la biblioteca MD_Parola.
  • Haz clic en el botón Instalar.
Biblioteca MD_Parola para ESP32
  • Se le pedirá que instale la biblioteca “MD_MAX72XX”.
  • Haga clic en el botón Instalar todo para instalar la dependencia.
Biblioteca MD_MAX72XX para ESP32
  • Copia el código anterior y ábrelo con Arduino IDE
  • Haz clic en el botón Upload en Arduino IDE para subir el código al ESP32
  • Ver la pantalla de la matriz de LEDs

Código de la matriz LED ESP32 – Texto desplazable

Cuando quieras imprimir un mensaje largo que no quepa en una pantalla de matriz LED, puedes usar la técnica del efecto de desplazamiento de texto.

El código ESP32 que se muestra a continuación demuestra cómo desplazar un mensaje en la matriz LED.

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp32/esp32-led-matrix */ #include <MD_Parola.h> #include <MD_MAX72xx.h> #define HARDWARE_TYPE MD_MAX72XX::FC16_HW #define MAX_DEVICES 4 // 4 blocks #define CS_PIN 21 // create an instance of the MD_Parola class MD_Parola ledMatrix = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES); void setup() { ledMatrix.begin(); // initialize the object ledMatrix.setIntensity(15); // set the brightness of the LED matrix display (from 0 to 15) ledMatrix.displayClear(); // clear led matrix display ledMatrix.displayScroll("ESP32", PA_CENTER, PA_SCROLL_LEFT, 100); } void loop() { if (ledMatrix.displayAnimate()) { ledMatrix.displayReset(); } }

Para más efectos de texto, por favor visite MD_Parola Library Reference.

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

Tutoriales Relacionados

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!