ESP32 - Matriz de LED

O display de matriz de LED, também conhecido como display de LED ou display de matriz de pontos, é amplamente utilizado. Neste tutorial, vamos aprender:

Depois disso, você pode adaptar facilmente o código para outras matrizes de LED, como matriz de LED 16x8, matriz de LED 64x8 ...

Sobre a Matriz de LED

Display de Matriz de LED

Existem muitos tipos de matriz de LED. Com o ESP32, a matriz de LED baseada no MAX7219 é amplamente utilizada. A matriz de LED baseada no MAX7219 tem as seguintes características:

  • A unidade básica de uma matriz de LED é um bloco
  • Cada bloco tem uma matriz de LED 8x8 (64 LEDs) e um driver MAX7219.
  • Existem dois formatos de bloco populares: o módulo genérico e o módulo FC-16.
  • Uma matriz de LED pode ser composta por um único bloco ou por vários blocos em cascata (daisy-chain)
  • Você pode comprar uma matriz de LED pronta com vários blocos (por exemplo, 4 em 1, 8 em 1)
  • Você também pode comprar vários blocos e ligá-los para formar uma matriz de LED do tamanho desejado.
  • Você vai declarar o tamanho da matriz de LED que usa no código do ESP32.

Pinagem

Pinagem da Matriz de LED

Uma matriz de LED é formada por um ou vários blocos. Cada bloco inclui dois grupos de pinos:

  • Grupo de pinos de entrada:
    • VCC: conecta ao 5V.
    • GND: conecta ao GND.
    • DIN é o pino de dados, conecte-o a qualquer pino digital do ESP32.
    • CS: Chip Select, conecte-o a qualquer pino digital do ESP32.
    • CLK: pino de clock, conecte-o a qualquer pino digital do ESP32.
  • Grupo de pinos de saída:
    • VCC: conecta ao VCC do grupo de pinos de entrada do próximo módulo.
    • GND: conecta ao GND do grupo de pinos de entrada do próximo módulo.
    • DOUT: Data Out (saída de dados), conecta ao pino DIN do grupo de pinos de entrada do próximo módulo.
    • CS: conecta ao CS do grupo de pinos de entrada do próximo módulo.
    • CLK conecta ao CLK do grupo de pinos de entrada do próximo módulo.

Diagrama de Ligação

Se a matriz de LED for formada por um único bloco:

  • Conecte o grupo de pinos de entrada ao ESP32
  • Deixe o grupo de pinos de saída desconectado
Diagrama de ligação da matriz de LED 8x8 FC-16 com ESP32

This image is created using Fritzing. Click to enlarge image

Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.

Diagrama de ligação da matriz de LED 8x8 genérica com ESP32

This image is created using Fritzing. Click to enlarge image

Se a matriz de LED for pronta com vários blocos:

  • Conecte o grupo de pinos de entrada ao ESP32
  • Deixe o grupo de pinos de saída desconectado
Diagrama de ligação do display de matriz de LED com ESP32

This image is created using Fritzing. Click to enlarge image

Se você mesmo montar a matriz de LED com vários blocos:

  • Conecte o grupo de pinos de entrada do primeiro bloco ao ESP32
  • Conecte o grupo de pinos de saída de cada bloco ao grupo de pinos de entrada do próximo bloco
  • Deixe o grupo de pinos de saída do último bloco desconectado
Diagrama de ligação da matriz de LED 32x8 FC-16 com ESP32

This image is created using Fritzing. Click to enlarge image

Diagrama de ligação da matriz de LED 32x8 genérica com ESP32

This image is created using Fritzing. Click to enlarge image

Como o display consome muita corrente (até 1A no brilho máximo):

  • Não use a alimentação do pino 5V do ESP32.
  • Use uma fonte de alimentação externa de 5V. O ESP32 e a matriz de LED podem compartilhar a alimentação de uma fonte de alimentação de 5V

Como o ESP32 se conecta à matriz de LED pelos pinos SPI:

  • Pinos GPIO18 (SCK) e GPIO23 (MOSI) no ESP32
  • O pino GPIO21 (CS) pode ser trocado por qualquer pino

Como Programar a Matriz de LED

Não é fácil controlar a matriz de LED. Felizmente, existem bibliotecas disponíveis para facilitar. Abaixo está um passo a passo de como escrever o código do ESP32 para controlar a matriz de LED

  • Inclua as bibliotecas:
#include <MD_Parola.h> #include <MD_MAX72xx.h>
  • Especifique qual hardware está sendo usado: GENERIC_HW ou FC16_HW.
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
  • Defina quantos blocos de LED são usados. Por exemplo, uma matriz de LED 4 em 1 tem 4 blocos.
#define MAX_DEVICES 4
  • Defina o pino que conecta ao pino CS da matriz de LED. Por exemplo, o pino GPIO21
#define CS_PIN 21
  • Crie uma nova instância da classe MD_Parola para o display de matriz de LED.
MD_Parola ledMatrix = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
  • Código na função 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 }
  • Exibir texto, números e mostrar efeitos animados: veja a próxima parte

ESP32 - Código da Matriz de LED

O código abaixo é para o display de matriz de LED 32x8 FC-16 (4 blocos). Mas você pode adaptá-lo facilmente para 8x8, 16x8, 64x8...

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.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); }

Passos Rápidos

  • Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 na Arduino IDE.
  • Faça a ligação conforme a imagem acima.
  • Conecte a placa ESP32 ao seu PC por meio de um cabo USB Type-C
  • Abra a Arduino IDE no seu PC.
  • Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
  • Clique no ícone Libraries na barra esquerda da Arduino IDE.
  • Pesquise “MD_Parola” e encontre a biblioteca MD_Parola
  • Clique no botão Install.
Biblioteca MD_Parola para ESP32
  • Será solicitado que você instale a biblioteca “MD_MAX72XX”
  • Clique no botão Install All para instalar a dependência.
Biblioteca MD_MAX72XX para ESP32
  • Copie o código acima e abra-o na Arduino IDE
  • Clique no botão Upload na Arduino IDE para carregar o código no ESP32
  • Veja o display de matriz de LED

Código ESP32 para Matriz de LED – Texto Rolante

Quando você quiser exibir uma mensagem longa demais para caber no display de matriz de LED, pode usar a técnica do efeito de texto rolante.

O código ESP32 abaixo mostra como rolar uma mensagem no display de matriz de LED.

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.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 mais efeitos de texto, visite a Referência da Biblioteca MD_Parola.

Vídeo

Tutoriais Relacionados

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!