🟢 Painel de LED 8x16 com Arduino: Escrevendo “ELETROCONDUTOR” com Efeito de Cascata

✨ Introdução

As matrizes de LED controladas pelo MAX7219 permitem criar displays incríveis com Arduino. Neste projeto, vamos usar 4 módulos 8x8 formando um painel 8x16 para exibir a palavra ELETROCONDUTOR, em blocos de 4 letras, com um efeito especial de cascata na hora de desenhar cada letra.

Esse efeito simula uma “queda” de pixels coluna por coluna, tornando a animação mais chamativa e dinâmica.

🚀! Esse código está bem mais elaborado que o anterior, pois além de dividir a palavra “ELETROCONDUTOR” em blocos de 4 letras, você incluiu efeito de cascata na escrita das letras, o que deixa o painel muito mais atrativo. 


🛠️ Materiais necessários

  • 1x Arduino UNO (ou compatível)

  • 4x módulos de matriz 8x8 com chip MAX7219

  • Jumpers macho-macho

  • Fonte 5V (pode ser a USB)


🔌 Ligações

MAX7219Arduino
VCC5V
GNDGND
DIN11
CLK13
CS10

(Se os módulos estiverem em série, basta ligar o primeiro módulo.)

ESQUEMA DE LIGAÇAO MESMO DOS OUTRO MODELOS 



📜 Código Completo

#include <LedControl.h> // Pinos: DIN, CLK, CS, quantidade de módulos LedControl lc = LedControl(11, 13, 10, 4); // --- Inversões opcionais --- const bool FLIP_H = false; const bool FLIP_V = false; byte inverterBits(byte b) { byte r = 0; for (int i = 0; i < 8; i++) if (b & (1 << i)) r |= (1 << (7 - i)); return r; } // --- Definição das letras (8x8) --- byte E_[8] = {B01111110,B01000000,B01000000,B01111100,B01000000,B01000000,B01000000,B01111110}; byte L[8] = {B01000000,B01000000,B01000000,B01000000,B01000000,B01000000,B01000000,B01111110}; byte T[8] = {B01111110,B00010000,B00010000,B00010000,B00010000,B00010000,B00010000,B00010000}; byte R[8] = {B01111100,B01000010,B01000010,B01111100,B01010000,B01001000,B01000100,B01000010}; byte O[8] = {B00111100,B01000010,B01000010,B01000010,B01000010,B01000010,B01000010,B00111100}; byte C[8] = {B00111100,B01000010,B01000000,B01000000,B01000000,B01000000,B01000010,B00111100}; byte N[8] = {B01000010,B01100010,B01010010,B01001010,B01000110,B01000010,B01000010,B01000010}; byte D[8] = {B01111100,B01000010,B01000010,B01000010,B01000010,B01000010,B01000010,B01111100}; byte U[8] = {B01000010,B01000010,B01000010,B01000010,B01000010,B01000010,B01000010,B00111100}; // Mapeia coluna considerando flip horizontal inline int mapCol(int c) { return FLIP_H ? (7 - c) : c; } // --- Mostrar letra com efeito cascata --- void mostrarLetraCascata(byte letra[8], int modulo) { lc.clearDisplay(modulo); for (int col = 7; col >= 0; col--) { byte colData = 0; for (int row = 0; row < 8; row++) { if (letra[row] & (1 << col)) colData |= (1 << (7 - row)); } if (FLIP_V) colData = inverterBits(colData); lc.setColumn(modulo, mapCol(col), colData); delay(30); } } // --- Mostrar bloco de até 4 letras --- void mostrarPalavraCascata(byte* letras[], int qtd) { for (int i = 0; i < 4; i++) { if (i < qtd) { mostrarLetraCascata(letras[i], 3 - i); } else { lc.clearDisplay(3 - i); } } } unsigned long tempoTroca = 0; int etapa = 0; void setup() { for (int i = 0; i < 4; i++) { lc.shutdown(i, false); lc.setIntensity(i, 5); lc.clearDisplay(i); } } void loop() { if (millis() - tempoTroca > 2000) { // troca bloco a cada 2 segundos tempoTroca = millis(); // Dividir "ELETROCONDUTOR" em blocos de até 4 letras if (etapa == 0) { byte* bloco1[] = {E_, L, E_, T}; // ELET mostrarPalavraCascata(bloco1, 4); } else if (etapa == 1) { byte* bloco2[] = {R, O, C, O}; // ROCO mostrarPalavraCascata(bloco2, 4); } else if (etapa == 2) { byte* bloco3[] = {N, D, U, T}; // NDUT mostrarPalavraCascata(bloco3, 4); } else if (etapa == 3) { byte* bloco4[] = {O, R}; // OR mostrarPalavraCascata(bloco4, 2); } etapa++; if (etapa > 3) etapa = 0; // reinicia } }

⚙️ Como funciona

  1. Cada letra foi criada como uma matriz 8x8 de bits.

  2. A função mostrarLetraCascata() exibe as colunas de cada letra com delay, simulando o efeito cascata.

  3. A palavra ELETROCONDUTOR foi dividida em blocos de até 4 letras para caber nos 4 módulos.

  4. A cada 2 segundos (millis()), um novo bloco é exibido.


🚀 Possíveis melhorias

  • Fazer a rolagem suave de toda a palavra em vez de blocos.

  • Adicionar caracteres especiais e símbolos.

  • Permitir entrada de texto via Serial Monitor para mostrar palavras personalizadas.

  • Sincronizar com relógio RTC para exibir hora e mensagens animadas.

Comentários

Postagens mais visitadas deste blog

contador 9999 com pic 16f628

CNC fotos cordenadas x y z dicas

codigo assembler braço mecanico para 5 motores