This website requires JavaScript.
Cupões
Enviar para
Blog

Tutorial de driver LED Arduino: Controle mais LEDs com 74HC595 e MAX7219

Originalmente publicada Oct 20, 2026, atualizada Oct 20, 2026

23 min

Índice de Conteúdos
  • Porque é que os projetos Arduino precisam de CI drivers de LED
  • Comparação de CI drivers de LED para Arduino
  • Como utilizar o 74HC595 com Arduino para LEDs e matrizes de LED
  • Como utilizar um módulo de matriz de LED MAX7219 com Arduino
  • Requisitos de alimentação para displays de matriz de LED com Arduino
  • Resolução de problemas de drivers de LED para Arduino
  • Projetos com drivers de LED para Arduino
  • Conclusão
  • Perguntas frequentes sobre drivers de LED para Arduino

Os pinos GPIO do Arduino esgotam-se rapidamente em projetos de LED de maior dimensão. Ao utilizar drivers de LED dedicados e CI de expansão, pode reduzir drasticamente a utilização de pinos, eliminar ciclos de multiplexagem pesados para o processador e simplificar a cablagem do display.

Neste guia, irá aprender a arquitetura operacional, as configurações de cablagem, as técnicas de cascata e as estratégias de otimização para o registo de deslocamento 74HC595 e o driver de LED MAX7219.

Porque é que os projetos Arduino precisam de CI drivers de LED

Limitações de GPIO e corrente do Arduino

Um Arduino Uno baseado no ATmega328P tem limites físicos que tornam impossível o acionamento direto de LEDs em larga escala:

  • Corrente máxima por pino: Um único pino de I/O digital pode fornecer ou absorver com segurança um máximo de 20 mA continuamente (o limite de pico absoluto é 40 mA).
  • Limite total do encapsulamento: A corrente combinada que flui pelos pinos principais VCC e GND do microcontrolador não deve exceder 200 mA.
  • Escassez física de pinos: O Arduino Uno oferece apenas 14 pinos de I/O digital e 6 pinos de entrada analógica.

Se tentar acionar dezasseis LEDs padrão de 15 mA simultaneamente, irá exigir 240 mA do encapsulamento do microcontrolador – violando o envelope de funcionamento seguro e arriscando a destruição térmica instantânea do silício.

Multiplexagem de LED vs. CI drivers de LED

Ao acionar matrizes padrão (como matrizes 8x8 ou displays de 7 segmentos), enfrenta uma escolha entre multiplexagem direta controlada por software e CI drivers de hardware dedicados:

  • Multiplexagem direta por GPIO: Requer que a CPU do Arduino execute um ciclo de alta frequência para varrer linhas e colunas continuamente. Se o ciclo principal for bloqueado por uma leitura de sensor, comunicação série ou uma chamada delay(), o display irá congelar ou cintilar instantaneamente.
  • Registos de deslocamento (74HC595): Expandem os pinos de saída digital usando uma interface série simples de 3 pinos. Embora resolvam os limites físicos de pinos a baixo custo, o microcontrolador ainda tem de executar o ciclo de varrimento de alta velocidade em software para multiplexar matrizes.
  • Drivers de display dedicados (MAX7219): Transferem completamente a multiplexagem da CPU. Contêm RAM estática incorporada para armazenar dados do display e osciladores de hardware para gerir as varreduras de linha/coluna automaticamente, libertando inteiramente a CPU do Arduino.

74HC595 vs. MAX7219: Que driver de LED deve escolher?

  • Escolha o 74HC595 se precisar de expansão de saída digital de uso geral (por exemplo, controlar um banco de relés, gráficos de barras personalizados ou indicadores de estado individuais) a um custo de componente muito baixo.
  • Escolha o MAX7219 se o seu projeto envolver especificamente grelhas de LED 8x8, banners de texto deslizante ou leituras de 7 segmentos com vários dígitos, pois trata da limitação de corrente, varrimento e regulação de intensidade num único die de silício.

Comparação de CI drivers de LED para Arduino

As tabelas abaixo descrevem as diferenças fundamentais entre expansores de saída padrão e controladores de display dedicados.

Característica Registo de deslocamento 74HC595 Driver de LED MAX7219
Função do silício Expansor série-para-paralelo de 8 bits Driver integrado de cátodo comum
Pinos de controlo necessários 3 pinos (Data, Clock, Latch) 3 pinos (SPI: DIN, CS, CLK)
Capacidade máxima de LED 8 LEDs individuais por chip 64 LEDs em matriz ou 8 dígitos de display
Ciclo de trabalho da multiplexagem Gerido em software pela CPU Varrido automaticamente a 800 Hz em hardware
RAM de display incorporada Nenhuma (apenas registos de saída com latch) RAM estática de dupla porta 8x8
Limitação de corrente Requer 8 resistências externas por chip Definida usando uma única resistência externa (R_iset)
Controlo de brilho PWM manual no pino Output Enable (OE) Controlo incorporado por registo digital de 16 níveis
Capacidade de cascata Infinita (limitada pela propagação do sinal) Até 8+ módulos sem problemas (limitada pela velocidade SPI)

Como utilizar o 74HC595 com Arduino para LEDs e matrizes de LED

O registo de deslocamento 74HC595 é um chip altamente económico para expandir os seus pinos de saída.

Pinout do 74HC595 explicado

O 74HC595 contém um registo de deslocamento de 8 bits e um registo de armazenamento tipo D de 8 bits. Os pinos principais incluem:

  • DS (Pino 14): Entrada de dados série.
  • SH_CP (Pino 11): Relógio do registo de deslocamento. Ativo no flanco ascendente.
  • ST_CP (Pino 12): Relógio do registo de armazenamento (Latch). Atualiza os pinos de saída paralelos.
  • OE (Pino 13): Ativação de saída. Ativo a LOW.
  • MR (Pino 10): Reset mestre. Ativo a LOW.
  • Q0 - Q7 (Pinos 15, 1-7): Saídas paralelas.
  • Q7' (Pino 9): Saída série (para ligação em cascata).

pinout diagram of a 74hc595 8 bit shift register ic

Figura: Diagrama de pinout de um CI de registo de deslocamento 74HC595 de 8 bits num encapsulamento DIP-16.

Diagrama de cablagem do 74HC595 com Arduino para matriz de LED 8x8

Para ligar uma configuração de dois registos de deslocamento a uma matriz de LED 8x8, ligue os pinos de relógio e latch de ambos os registos em paralelo ao Arduino e ligue em cascata as suas linhas de dados série.

an arduino uno controlling 74hc595 shift registers

Figura: Esquema de cablagem detalhado mostrando um Arduino Uno a controlar dois registos de deslocamento 74HC595 ligados em cascata. O primeiro registo controla os ânodos das linhas; o segundo registo controla os cátodos das colunas com resistências em série, partilhando os sinais de latch e clock.

Código Arduino para matriz de LED 74HC595 com shiftOut()

Este código demonstra como varrer uma imagem armazenada em buffer 3D (como um padrão de coração) numa matriz de LED 8x8 usando uma cascata de dois registos. Ao deslocar dois bytes sequencialmente, as colunas e linhas são atualizadas em cada linha de varrimento.

Destaques do código:

  • Operação de deslocamento em cascata: Mantém o latch a LOW enquanto desloca dois valores de 8 bits consecutivos. O primeiro byte transborda para o Registo 2 (Colunas) enquanto o segundo byte preenche o Registo 1 (Linhas).
  • Mapeamento de polaridade de colunas e linhas: Inverte os valores das colunas (~pattern) para acionar os cátodos a LOW, e define os pinos individuais das linhas a HIGH através de um deslocamento bit a bit.
  • Intercalação de atualização estável: Emprega um ciclo de baixo atraso para percorrer cada linha de varrimento sequencialmente, proporcionando uma imagem visual estável e sem cintilação.
C/C++
const int latchPin = 10;
const int clockPin = 9;
const int dataPin = 11;

// Representação do padrão de coração 8x8 (1 = LED ativo, 0 = LED apagado)
byte heartPattern[8] = {
  B00000000,
  B01100110,
  B11111111,
  B11111111,
  B11111111,
  B01111110,
  B00111100,
  B00000000
};

C/C++
// Configuração
void setup() {
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}
C/C++
// Ciclo principal
void loop() {
  // Varrer sequencialmente todas as 8 linhas
  for (int row = 0; row < 8; row++) {
    // Colunas (ativas a LOW): Inverter o padrão para que os 1s sejam acionados a LOW (absorvendo corrente)
    byte colData = ~heartPattern[row];
    
    // Linhas (ativas a HIGH): Ativar apenas a linha atual (ex. Linha 0 -> B00000001, Linha 1 -> B00000010)
    byte rowData = (1 << row);
    
    // Colocar o pino latch a LOW e mantê-lo assim enquanto transmitimos dados
    digitalWrite(latchPin, LOW);
    
    // 1. Deslocar primeiro os dados das colunas (este byte transborda para o Registo 2, controlando as Colunas)
    shiftOut(dataPin, clockPin, MSBFIRST, colData);
    
    // 2. Deslocar depois os dados das linhas (este byte permanece no Registo 1, controlando as Linhas)
    shiftOut(dataPin, clockPin, MSBFIRST, rowData);
    
    // Colocar o pino latch a HIGH para apresentar os estados atualizados simultaneamente
    digitalWrite(latchPin, HIGH);
    
    // Intervalo de atraso por linha de varrimento (1,25 ms por linha atinge uma taxa de atualização de ~100 Hz)
    delayMicroseconds(1250);
  }
}

Embora o shiftOut() baseado em software seja simples e conveniente, depende da comutação manual por software dos pinos de clock e dados, o que introduz sobrecarga de execução. Para displays de alta frequência e muito exigentes, pode mudar para o barramento SPI (Serial Peripheral Interface) de hardware do Arduino. O SPI de hardware utiliza o circuito interno dedicado de registo de deslocamento do ATmega328P, libertando ciclos de clock da CPU e permitindo taxas de transferência de dados até 8 MHz.

Ligação em cascata de múltiplos registos de deslocamento 74HC595

Para controlar mais de 8 saídas, pode encadear vários registos de deslocamento sem utilizar mais pinos no Arduino. Ligue a saída série Q7' (Pino 9) do primeiro registo à entrada de dados série DS (Pino 14) do segundo registo. Ligue os pinos de clock (SH_CP) e latch (ST_CP) de ambos os chips em paralelo às mesmas linhas de controlo do Arduino.

Devido à natureza FIFO (First-In, First-Out) do deslocamento série, enviar 16 bits de dados significa que os primeiros 8 bits deslocados transbordam do primeiro chip e instalam-se no segundo chip. Portanto, ao usar transmissão MSBFIRST, o byte de dados destinado ao segundo registo de deslocamento na cadeia deve ser deslocado primeiro.

Controlo de brilho PWM do 74HC595 usando o pino OE

Para implementar controlo global de brilho, ligue o pino OE (Output Enable) do 74HC595 a um dos pinos do Arduino com PWM (como D3 ou D9) em vez de o ligar diretamente à terra. Ao escrever um valor analógico usando analogWrite(OEPin, brightnessValue) (onde 0 é brilho máximo e 255 é desligado), pode modular o tempo de ativação de saída dos registos.

Como utilizar um módulo de matriz de LED MAX7219 com Arduino

Embora a cablagem de circuitos integrados (CI) nus em breadboards seja útil para aprendizagem fundamental, os makers práticos e os desenvolvedores de produtos utilizam quase exclusivamente os amplamente disponíveis módulos de matriz de LED MAX7219 8x8. Estas placas breakout económicas e prontas a usar vêm com um CI MAX7219 de montagem em superfície, condensadores de desacoplamento e o suporte da matriz já soldados numa PCB compacta, tornando a integração de hardware plug-and-play.

Princípio de funcionamento do módulo de matriz de LED MAX7219 8x8

Um módulo de matriz de LED MAX7219 8x8 trata da atualização da multiplexagem completamente "a bordo". O módulo contém uma RAM estática de dupla porta 8x8 interna.

Quando o seu Arduino transmite dados de píxeis para a placa através do seu barramento SPI de alta velocidade, esses estados são escritos diretamente nesta memória incorporada. O driver então varre automática e continuamente a grelha a uma taxa interna fixa de 800 Hz.

Como o módulo atualiza o hardware internamente, o seu Arduino fica inteiramente aliviado do ciclo de Persistência da Visão (PoV) pesado para a CPU, evitando cintilação do ecrã quando o seu ciclo principal executa tarefas mais lentas.

Pinout e interligação do módulo de matriz de LED MAX7219 8x8

Os módulos padrão de matriz de LED MAX7219 8x8 tipicamente expõem todas as linhas SPI necessárias em cabeçalhos simples e fáceis de usar de 5 pinos nas extremidades opostas da PCB (comummente designados como lados "Input" e "Output").

max7219 8x8 led matrix module

Figura: Módulo de matriz de LED MAX7219 8x8 mostrando o cabeçalho de entrada padrão de 5 pinos (Esquerda) para comunicação com o Arduino e o cabeçalho de saída de 5 pinos (Direita) para ligação em cascata.

  • VCC: Entrada de alimentação (tipicamente +5V DC).
  • GND: Referência de terra do sistema.
  • DIN (Data In): Entrada de dados série ligada à linha MOSI do microcontrolador.
  • CS (Chip Select / LOAD): Pino acionado a LOW para iniciar a transmissão, e a HIGH para fixar os bytes recebidos.
  • CLK (Serial Clock): Sincroniza a transmissão de bytes até 10 MHz.
  • DOUT (Data Out): Encontrado no cabeçalho de saída. Usado para encadear vários módulos.

Colocação da resistência R_iset integrada

Num chip de silício nu, a corrente de pico do segmento de LED deve ser ajustada usando uma resistência externa calculada (R_iset) ligada ao pino ISET.

Nos módulos padrão de matriz de LED MAX7219 8x8, esta resistência de definição de corrente já está integrada na placa (normalmente uma resistência de montagem em superfície de 10k ohms). Esta resistência predefinida configura a corrente de pico do segmento com segurança para 40 mA para LEDs vermelhos padrão, eliminando completamente a necessidade de calcular, montar em breadboard ou soldar resistências discretas.

wiring connection arduino uno and max7219 8x8 led matrix

Figura: Diagrama esquemático mostrando as ligações entre um Arduino Uno e um módulo de matriz de LED MAX7219 8x8.

Registos de controlo do MAX7219

A baixo nível, a comunicação com o módulo é realizada transmitindo um pacote de 16 bits composto por um Registo de Endereço de 8 bits, seguido por um Byte de Dados de 8 bits:

Byte de Comando = [Endereço (D15-D8)] + [Byte de Dados (D7-D0)]

Os principais registos de controlo mapeados internamente na placa são:

Endereço do Registo (Hex) Nome do Registo Propósito / Configurações comuns
0x09 Modo de descodificação 0x00 para mapeamento bruto de colunas da matriz 8x8; 0x0F/0xFF para 7 segmentos.
0x0A Intensidade Regulação de intensidade digital interna de 0x00 (mín.) a 0x0F (máx., ciclo de trabalho 15/16).
0x0B Limite de varrimento Definir para 0x07 para indicar ao driver que varra todas as 8 linhas/colunas.
0x0C Shutdown 0x00 para standby de baixo consumo; 0x01 para modo de funcionamento ativo.
0x0F Teste de display 0x00 para funcionamento normal; 0x01 para substituir e iluminar todos os LEDs.
0x01 a 0x08 Dígito 0 a 7 Mapeia diretamente para as Colunas 1 a 8 no seu módulo de matriz de LED 8x8.

Bibliotecas Arduino dedicadas vs. controlo de baixo nível

Embora enviar códigos de registo em bruto usando a biblioteca de hardware SPI.h seja altamente educativo para compreender os registos subjacentes, escrever gráficos complexos ou texto deslizante de raiz é tedioso.

Para projetos reais, os desenvolvedores recorrem a bibliotecas open-source dedicadas e altamente otimizadas que tornam o controlo de módulos de matriz de LED MAX7219 incrivelmente fácil:

  1. LedControl (Biblioteca oficial do Arduino): Uma biblioteca leve e amigável para principiantes que permite endereçar módulos individuais ou pequenas cadeias, alternar LEDs individuais com coordenadas (setLed()) ou exibir caracteres.
  2. MD_MAX72XX e MD_Parola: O padrão de ouro para projetos comerciais e de hobby. Trata de variações de configuração de hardware (como layouts de módulos FC-16), buffers de texto deslizante com vários dígitos, tipos de letra, efeitos de animação de entrada/saída de texto e layouts de zonas multilinha com sobrecarga de codificação mínima.

Exemplo: Controlo SPI de baixo nível conceptual

O código abaixo demonstra como uma biblioteca dedicada interage com os registos internos do MAX7219 nos bastidores usando o barramento SPI.h de hardware nativo do Arduino.

C/C++
// Definições de pinos
// Includes e definições
#include <SPI.h>
const int csPin = 10;

// Endereços dos registos MAX7219
const byte REG_NOOP         = 0x00;
const byte REG_DIGIT0       = 0x01;
const byte REG_DECODE_MODE  = 0x09;
const byte REG_INTENSITY    = 0x0A;
const byte REG_SCAN_LIMIT   = 0x0B;
const byte REG_SHUTDOWN     = 0x0C;
const byte REG_DISPLAY_TEST = 0x0F;


// Buffer do padrão do display
byte heartPattern[8] = {
  B00000000,
  B01100110,
  B11111111,
  B11111111,
  B11111111,
  B01111110,
  B00111100,
  B00000000
};
C/C++
// Função auxiliar para escrever num registo
void writeRegister(byte address, byte data) {
  digitalWrite(csPin, LOW);
  SPI.transfer(address);
  SPI.transfer(data);
  digitalWrite(csPin, HIGH);
}
C/C++
// Função de configuração
void setup() {
  pinMode(csPin, OUTPUT);
  digitalWrite(csPin, HIGH);
  SPI.begin();
  SPI.beginTransaction(SPISettings(8000000, MSBFIRST, SPI_MODE0));
  writeRegister(REG_DISPLAY_TEST, 0x00);
  writeRegister(REG_DECODE_MODE, 0x00);
  writeRegister(REG_INTENSITY, 0x03);
  writeRegister(REG_SCAN_LIMIT, 0x07);
  writeRegister(REG_SHUTDOWN, 0x01);
  for (int i = 1; i <= 8; i++) {
    writeRegister(i, 0x00);
  }
}
C/C++
// Ciclo principal
void loop() {
  for (int col = 0; col < 8; col++) {
    writeRegister(REG_DIGIT0 + col, heartPattern[col]);
  }
  delay(1000);
}

Ligação em cascata de módulos de matriz de LED MAX7219 8x8

Cascatear vários módulos de matriz de LED MAX7219 8x8 para construir um display de banner largo é notavelmente simples.

Basta montar os módulos lado a lado. Ligue as linhas comuns - VCC, GND, CLK e CS - em paralelo em todas as placas (normalmente facilmente feito usando cabos jumper DuPont fêmea-fêmea padrão).

Para o percurso de dados série, encaminhe o pino DOUT (Data Out) no cabeçalho de saída direito do primeiro módulo diretamente para o pino DIN (Data In) no cabeçalho de entrada esquerdo do módulo adjacente.

Quando utiliza bibliotecas de nível superior como MD_Parola, basta declarar o número total de módulos ligados nas suas configurações de setup (por exemplo, #define MAX_DEVICES 4). A biblioteca coordena automaticamente o deslocamento dos buffers de texto série através das placas encadeadas, criando scrolls de texto multimódulo sincronizados e sem falhas.

Requisitos de alimentação para displays de matriz de LED com Arduino

Embora um único módulo possa funcionar em segurança a partir do regulador de 5V incorporado do Arduino, matrizes em cascata maiores ultrapassarão rapidamente o orçamento de energia USB:

  • Limite de alimentação USB 2.0: As portas USB padrão de computador limitam as correntes de alimentação a 500mA.
  • Consumo de corrente em cascata: Um display 8x32 (4 módulos) a funcionar com brilho máximo pode facilmente consumir 600 mA a 1A sob alta densidade de píxeis.
  • A solução: Ligue uma fonte de alimentação externa regulada de 5V com classificação de pelo menos 2A diretamente às linhas VCC e GND dos seus módulos de LED. Crucialmente, ligue sempre a linha GND da fonte de alimentação externa ao pino GND do Arduino para manter uma referência de terra comum.

Resolução de problemas de drivers de LED para Arduino

#1 Saídas do 74HC595 não atualizam

Se os seus LEDs não estão a mudar de estado, verifique o fio Latch (ST_CP). Se esta linha estiver desligada ou em curto com GND, o registo de deslocamento receberá os dados, mas nunca carregará os valores nos pinos de saída físicos.

#2 Ordem incorreta dos LEDs após cascata

Se os seus LEDs estão a acender pela ordem inversa ou a deslocar dados para o registo errado, tem um erro de mapeamento FIFO. Lembre-se que o byte de dados deslocado primeiro é empurrado para o segundo chip da cadeia. Tente trocar a ordem das suas chamadas shiftOut() no código.

#3 Matriz MAX7219 não exibe texto

Se uma matriz em cascata permanecer completamente em branco, o culpado mais comum é uma sequência de ativação em falta. O MAX7219 arranca num estado de Shutdown de baixo consumo por omissão.

O seu código de setup deve escrever explicitamente 0x01 no registo Shutdown (0x0C) e configurar o registo Scan Limit (0x0B) para 0x07 para ativar todas as 8 linhas.

#4 Matriz de LED está fraca ou irregular

Se os LEDs parecerem fracos ou desvanecerem à medida que percorre uma cadeia em cascata, verifique a distribuição de energia. A resistência dos traços de fios jumper finos causa uma queda de tensão.

Encaminhe sempre fio de calibre grosso diretamente da sua fonte de alimentação de 5V para o pino de entrada de alimentação de cada módulo, em vez de encadear os fios VCC finos de placa em placa.

#5 Display de LED cintila

A cintilação é quase sempre causada por uma referência de terra em falta. Se os seus módulos são alimentados por um adaptador externo e esqueceu-se de ligar um fio entre o terminal negativo do adaptador e o pino GND do Arduino, os sinais SPI de alta velocidade irão flutuar descontroladamente em relação à referência flutuante.

#6 Problemas no estado de arranque

Durante a ligação, as saídas do registo de deslocamento podem flutuar ou inicializar aleatoriamente, causando um breve flash indesejado de todos os LEDs ligados.

Para evitar isto, coloque uma resistência pull-up de 10k Ohm do pino OE para VCC. Isto força as saídas para um estado de alta impedância (desativado) no arranque. Assim que a sequência de boot do Arduino estiver concluída, o seu código de setup pode colocar o pino OE a LOW para ativar estados de saída limpos.

Projetos com drivers de LED para Arduino

Display de texto deslizante 8x32 com MAX7219

Ao cascatear quatro módulos 8x8 padrão e utilizar a biblioteca MD_Parola, pode construir um display de outdoor deslizante grande com animações de entrada e saída de texto fluidas.

four 8x8 led matrix

Figura: Quatro módulos de matriz de LED 8x8 ligados em cascata para um projeto de display de texto com Arduino

Gráfico de barras de LED grande usando 74HC595

Ao encadear três registos de deslocamento 74HC595, pode acionar um indicador de nível de áudio de 24 segmentos altamente sensível ou um medidor de bateria com brilho excecional e zero sobrecarga de pinos.

Multiplexagem de display de 7 segmentos com Arduino

Para projetos que requerem leituras numéricas, uma configuração de multiplexagem de display de 7 segmentos com Arduino é uma implementação clássica. Um display de 7 segmentos típico de vários dígitos baseia-se numa disposição padrão de sete LEDs de segmento individuais rotulados a, b, c, d, e, f e g, juntamente com um oitavo segmento opcional de ponto decimal (dp).

Num encapsulamento de 4 dígitos, isto traduz-se em 12 pinos de interface física totais: 8 pinos ligados em paralelo para mapear os segmentos de todos os dígitos, e 4 pinos de cátodo comum ou ânodo comum para selecionar qual o dígito ativo.

Muitos projetos de multiplexagem de 7 segmentos com Arduino usam registos de deslocamento 74HC595 ou drivers MAX7219 para reduzir a utilização de GPIO e simplificar o timing de atualização. Esta configuração é altamente versátil, quer esteja a usar configurações de ânodo comum ou cátodo comum.

Em vez de usar 32 pinos para acionar quatro dígitos diretamente, a multiplexagem cicla pelos quatro pinos comuns sequencialmente enquanto desloca os dados de segmento apropriados. Quando varridos rapidamente, os dígitos individuais fundem-se para formar um display contínuo de vários dígitos sem cintilação visível.

jlcpcb pcb assembly service banner 1
Passar de protótipos em breadboard para uma PCB de display de LED personalizada
Obter orçamento gratuito
  • Se está a passar de protótipos em breadboard para uma PCB de display de LED personalizada, planeie os percursos de corrente, a colocação de conectores, os condensadores de desacoplamento e as pegadas dos CI drivers desde cedo.
  • Os serviços de fabrico e montagem de PCB da JLCPCB podem ajudar a transformar protótipos de drivers de LED para Arduino em placas compactas prontas para produção.

Conclusão

Os drivers de LED para Arduino permitem que pequenos microcontroladores controlem displays surpreendentemente grandes usando timing de varrimento cuidadoso e arquiteturas de cablagem partilhada. O varrimento de matrizes, os registos de deslocamento 74HC595, a Charlieplexing e os drivers MAX7219 resolvem cada um diferentes problemas de escala dependendo dos limites de GPIO, requisitos de brilho, sobrecarga da CPU e complexidade do circuito.

Perguntas frequentes sobre drivers de LED para Arduino

P: Quantos LEDs pode um 74HC595 controlar?

Um único registo de deslocamento 74HC595 tem 8 saídas paralelas, permitindo controlar diretamente até 8 LEDs individuais. No entanto, pode encadear vários registos em série para escalar as saídas indefinidamente.

P: Quantos módulos MAX7219 podem ser cascateados?

Pode cascatear sem problemas até 8 módulos MAX7219 em série sobre um barramento SPI de hardware padrão antes que os atrasos de propagação do sinal nas linhas de dados comecem a causar problemas de latência.

P: O MAX7219 requer código de multiplexagem?

Não. O MAX7219 possui circuitos de multiplexagem de hardware incorporados que atualizam continuamente as colunas da matriz ligada internamente, não requerendo qualquer código de multiplexagem no seu Arduino.

P: Porque é que a saída do meu 74HC595 é aleatória no arranque?

Na ligação, os registos de deslocamento internos arrancam num estado aleatório. Pode resolver isto colocando uma resistência pull-up de 10k Ohm no pino Output Enable (OE) para manter as saídas desativadas até o código de setup do seu Arduino estar concluído.

P: O 74HC595 pode acionar LEDs de alta potência?

Não. Um pino paralelo do 74HC595 tem uma classificação de corrente máxima de saída de apenas 35 mA. Para acionar LEDs de alta potência, ligue as saídas do registo de deslocamento a uma placa driver de transístores ou a um array Darlington.

P: Qual é melhor: 74HC595 ou MAX7219?

O 74HC595 é melhor para expansão de saída digital de uso geral com orçamento limitado. O MAX7219 é vastamente superior para leituras complexas de 7 segmentos de cátodo comum ou grelhas de LED 8x8.

P: Porque é que a minha matriz de LED cintila?

A cintilação é geralmente causada por usar uma fonte de alimentação externa sem ligar o seu fio de terra ao pino GND do Arduino, ou por usar um ciclo SPI controlado por software que é bloqueado por operações lentas no seu código.

P: Os módulos MAX7219 precisam de resistências externas?

Não. Os módulos padrão de matriz de LED MAX7219 8x8 vêm com uma resistência de definição de corrente integrada e pré-soldada na placa, eliminando completamente a necessidade de resistências em série externas nas suas colunas.