A maneira usual de fazer isso é usar PWM (Modulação por Largura de Pulso)
Praticamente qualquer microcontrolador moderno possui um periférico PWM que pode ser configurado para esse fim. Se você não quiser usar um microcontrolador, um IC PWM dedicado ou um IC de timer como o onipresente 555 podem ser usados.
O processo é simples, a frequência de pulso é definida com rapidez suficiente para que o olho humano não possa detectar cintilação (geralmente acima de 25Hz - consulte Persistência da visão ) e o tempo decorrido vs o intervalo varia de 100% a (brilho total) a 50% a 50% de desconto (meio brilho) a 0% de desconto (desligado)
Observe que isso pode ser facilmente usado para uma matriz; você simplesmente fornece o PWM a todos os transistores de driver de LED (verifique se a corrente base é adequada para bipolar ou use MOSFETs As opções de design dependerão do tipo de LED que você está dirigindo, corrente alta / baixa)
Verifique na rede "555 LED Fade" e você deverá obter muitos resultados. Aqui está um escolhido aleatoriamente a partir daqui (eu não o verifiquei, não posso confirmar se funciona corretamente):
Como alternativa, se a precisão absoluta do tempo não for tão importante, uma opção simples seria usar um filtro RC e uma chave de transistor. Dessa forma, a tampa não precisa fornecer a corrente do LED, apenas a corrente base. Algo assim:
Simulação:
Qualquer NPN de propósito geral deve funcionar, e você pode ajustar os valores de R e C para se adequarem.
Essa opção pode ser facilmente estendida para uma matriz de espelhos atual com a adição de um opamp. Este circuito deve ter um bom desempenho, desde que os transistores sejam do mesmo tipo (a fonte usada é + 5V):
Simulação:
Se você tiver uma tensão de alimentação alta o suficiente, os LEDs podem entrar em séries como esta (a fonte usada aqui é + 10V):
Simulação:
Como alternativa, se você tem uma tensão de alimentação baixa, mas deseja acionar os LEDs em série, há muitos ICs de impulso baratos, como o CAT4238 . Esta parte pode escurecer os LEDS usando PWM ou uma tensão DC variável (os detalhes estão na folha de dados)