Controlando muitos LEDs com poucos pinos GPIO

12

Concluí com sucesso o meu "olá mundo" do meu hardware usando este guia:

http://www.raspberrypi-spy.co.uk/2012/06/control-led-using-gpio-output-pin/

Agora eu gostaria de passar para coisas maiores e mais brilhantes, LEDs mais controlados individualmente! Obviamente, o próximo passo é remover a fonte de tensão do Raspberry Pi e adicionar mais LEDs, mas eventualmente vou ficar sem pinos GPIO, então acho que o que preciso agora é controlar um circuito que de alguma forma saberá , com base nos "sinais codificados" do GPIO, quais LEDs devem ser ligados e desligados. Que tipo de exemplos de circuitos devo procurar? E o mais importante em relação ao Raspberry Pi, ele ou rpi.gpio poderia causar problemas, talvez com relação à sincronização do sinal?

SkyNT
fonte
A muliplexing reduzirá radicalmente o número de GPIO que precisam ser usados, em conjunto com o Persitance of Vision usando o PWM para reduzir ainda mais o GPIO ou criar grandes matrizes com o mínimo de GPIO. Isso já foi respondido aqui.
Piotr Kula

Respostas:

13

O que você está procurando nesse caso é uma matriz de LED . Você pode controlar essa matriz a partir dos pinos GPIO, mas isso ainda limita a quantidade de LEDs que você pode conectar (o tamanho da matriz) e também pode começar a consumir muita corrente se você não tomar cuidado.

Uma opção melhor é conectar uma matriz de LED ao barramento I2C, usando um ou vários extensores de E / S I2C. Dessa forma, você pode criar uma matriz de tamanho enorme (64 LEDs, por exemplo, podem ser feitos com o extensor de E / S de 16 bits do ONE). Outro motivo para usar esses extensores de E / S é que eles são um pouco mais robustos, podem fornecer um pouco mais de corrente e manter sua CPU principal fora de perigo.

Neste site, esses extensores de E / S são discutidos várias vezes, portanto, você poderá encontrar informações sobre eles com bastante facilidade. Este link fornece algumas informações sobre esses extensores e uma matriz (embora usado para entrada, mas basicamente é a mesma idéia, mas você não usa a matriz para digitalizar, mas para orientar os LEDs)

O único requisito extra para criar uma matriz de trabalho suave é que você precisa aumentar a matriz, pois o RPi pode atualizar cada LED individual pelo menos 20 vezes a cada segundo; caso contrário, você começará a ver tremulações, mas isso também é explicado no primeiro link (parágrafo "Multiplexação e persistência da visão").

ikku
fonte
Isto é muito interessante. Obrigado pela leitura! Eu poderia tentar isso em pequena escala usando os pinos GPIO antes de estar pronto para mudar para extensores. Fiz alguns testes com os pinos GPIO e até agora consegui obter uma multiplexação satisfatória. Não estou preocupado com a corrente, pois usarei apenas o Pi para alternar uma corrente externa. Isso vai escalar bem? Provavelmente não, mas estou aqui principalmente para a lição de qualquer maneira!
SkyNT
3

Usei o expansor de portas MCP23017 I²C para fazer esse tipo de coisa. Siga este link para encontrar um código de exemplo para o raspberry pi. Você pode controlar 16 LEDS por chip e 8 chips sem precisar fazer multiplexação.

John La Rooy
fonte