Sex, 4 de Novembro de 2011
matrizes Led são brinquedos divertidos. Quem não adoraria blinkenlights? Electronicsé difícil. A eletrônica é muito mais difícil do que a programação. Eu tive dificuldade em tentar entender como as matrizes led funcionam. Qual é a melhor maneira deaprender algo? Construa um você mesmo.
estrutura da matriz do diodo emissor de luz
em um formato da matriz Os diodos emissores de luz são arranjados nas fileiras e nas colunas. Você também pode pensar neles como coordenadas y e X. Vamos supor que temos matriz 4×4.As linhas seriam marcadas de A A D e as colunas de 1 a 4. Agora podemos adicionar cada LED por linha e coluna. O led superior esquerdo seria (A,1). Bottomdown led seria (D,4).
matrizes Led vêm em dois sabores. Ânodo de linha comum (esquerda) e código de linha comum (direita).
a figura acima mostra as diferentes configurações. A diferença entre essas duas configurações é como você acendeu um led. Com fontes de corrente de linha comum (tensão positiva) são anexadas às linhas A..D andcurrents pias (tensão negativa, terra) para colunas 1..4. Compias de corrente de cátodo de linha comum são anexadas às linhas A..D e currentsources para colunas 1..4.
por exemplo. Para iluminar a parte inferior para baixo o diodo emissor de luz (D,4) da matriz comum do cátodo youwould alimenta a tensão positiva à coluna 4 e conecta a fileira D à terra. Forsake of clarity vou usar cátodo de linha comum em exemplos para o resto deste artigo.
construindo uma matriz de LED
para construir uma matriz de cátodo de linha comum 4×4, você precisará de 16 LEDs, quatrosresistores, alguns cabeçalhos e placa de prototipagem. Comecei colando theleds na placa de prototipagem com cola epóxi. Desta forma, é mais fácil terleds lindamente alinhados. Ao colar os leds, certifique-se de que as pernas longas e curtas estejam alinhadas da mesma maneira.
quando a cola está seca, é hora de dobrar e soldar. Primeiro dobre todos os cátodospara a esquerda o mais próximo possível da placa de prototipagem. Solde todos os cátodesem cada linha juntos. Quando os cátodos estiverem prontos, dobre todos os ânodos. Anodesdeve não tocar em cátodos. Usei um pedaço de tubo de plástico para ajudar a dobrar os ânodos para formar uma ponte acima dos cátodos.
agora soldam todos os ânodos em cada linha. Solde os cabeçalhos econecte as linhas do cátodo diretamente ao cabeçalho.
as linhas do ânodo são conectadas ao cabeçalho com resistores limitadores de corrente.O valor do resistor depende do LED usado. Verifique o LED datasheetfor tensão e corrente para a frente. LEDcalculator irá ajudá-lo a descobrir resistor correto. Matrix agora está pronto para testes.
endereçando único diodo emissor de luz
conectando a terra à fileira A e a tensão positiva à coluna 1 iluminará o diodo emissor de luz superior direito (a,1).
conectando a terra à linha D e a tensão positiva à coluna 4 iluminará a parte inferior para baixo o diodo emissor de luz (D,4).
a intuição diria que a iluminação dos dois (a,1) e (D,4) ao mesmo tempoé apenas conectar todos os quatro fios. Este não é o caso. Existem quatro LEDs que estão acesos. Isso ocorre porque a corrente também está fluindo através (A,4) e (D,1).
multiplexação e persistência da visão
a multiplexação pode ser usada para exibir padrões arbitrários com ledmatrices. A multiplexação às vezes também é chamada de digitalização. Ele verifica linhas (geralmente de cima para baixo) e luzes necessárias leds apenas em uma linha attime. Algo como seguir:
- comece por ter tudo desconectado.
- conecte a tensão positiva todas as colunas necessárias.
- conecte a linha ao solo. Isso acende os leds necessários na linha.
- desconecte a linha e todas as colunas.
- faça as mesmas etapas, uma por uma, para todas as linhas e, em seguida, comece a partir do início.
faça isso devagar e você verá linhas de LED piscando. Fazê-lo realmente fastand olho humano pode ver todo o padrão. Fenômeno é chamadopersistência da visão.
desenhe um padrão
vamos escrever algum código simples para desenhar um padrão na matriz. Nota!Mesmo que eu esteja usando a placa Arduino eu não uso bibliotecas Arduino norIDE para o desenvolvimento. No entanto, eu gosto do esquema de numeração de pinos Arduino.As funções pin_mode()
e digital_write()
funcionam exatamente da mesma maneira que seus equivalentes Arduino.
começamos configurando os pinos e o estado padrão para eles.
uint8_t column_pins = { 2, 3, 4, 5 };uint8_t row_pins = { 11, 10, 9, 8 };static void init(void) { /* Turn all columns off by setting then low. */ for (uint8_t x=0; x<4; x++) { pin_mode(column_pins, OUTPUT); digital_write(column_pins, LOW); } /* Turn all rows off by setting then high. */ for (uint8_t y=0; y<4; y++) { pin_mode(row_pins, OUTPUT); digital_write(row_pins, HIGH); }}
para exibir um padrão na matriz, usamos a função draw()
.Bitmap é passado como matriz bidimensional. O atraso é usado apenas parademonstrar persistência da visão.
uint8_t pattern = {{1,0,0,1}, {0,1,0,0}, {0,0,1,0}, {1,0,0,1}};void draw(uint8_t buffer, uint8_t delay) { for (uint8_t row=0; row<4; ++row) { /* Connect or disconnect columns as needed. */ for (uint8_t column=0; column<4; ++column) { digital_write(column_pins, buffer); } /* Turn on whole row. */ digital_write(row_pins, LOW); _delay_ms(delay); /* Turn off whole row. */ digital_write(row_pins, HIGH); }}
para examinar a persistência do efeito de visão, desenhamos o padrão comdiferentes atrasos.
uint8_t main(void) { init(); /* With 100ms delay eye can see updating row by row. */ for (uint8_t i=0; i<10; i++) { draw(pattern, 100); } /* With 10ms delay pattern appears but flickers. */ for (uint16_t i=0; i<100; i++) { draw(pattern, 10); } /* Withoud delay solid pattern appears. */ while (1) { draw(pattern, 1); } return 0;}
o código completo pode ser encontrado degithub.Verifique a saída do vídeo abaixo.
mais leitura
habilidades de circuito: matriz LED pela revista Make. Dirigindo um LED com ou sem um Resistor por Alexander Weber. Introdução à condução de matrizes LED (PDF) technote pela Avago Technologies. Diodos emissores de luz (LEDs) pelo Clube de eletrônicos.
publicado em
AVR Electronics