Olá leitores, tudo certo? hoje aprenderemos como implementar uma técnica chamada Chalieplexing (multiplexação) com Arduino UNO.
Segundo a Wikipedia, o Charlieplexing é uma técnica para controle de diversos dispositivos (displays, led’s) utilizando apenas alguns poucos pinos de um determinado microcontrolador. A imagem abaixo ilustra bem o conceito:
O conceito básico do Charlieplexing diz que variando-se nível de sinal (alto, baixo ou estado Z) dos pinos de saída, consegue-se uma combinação diferente de saídas ativadas. A equação que define quantos LED’s podem ser aliementados por determinado número de pinos é (n*n)-n, sendo n o número de pinos disponíveis e o resultado da equação o número de LED’s.
Exemplo: para n=4 (pinos) teríamos (4*4)-4 = 12 LED’s. Eu resolvi implementar um display com 8 LED’s para um projeto que está por vir (aguarde!), portanto vou precisar de 4 pinos digitais do Arduino. Veja abaixo meu circuito (me inspirei neste projeto do Instructables):
Em termos de código, três coisas precisam ser feitas para que cada LED se acenda individualmente:
- Colocar um pino em nível alto (5V) – o pino do Anodo do LED
- Colocar um pino em nível baixo (0V) – o pino do Catodo do LED
- Colocar TODOS os demais pinos em estado ‘Z’ (3-state) – basicamente deixar os pinos flutuando. IMPORTANTE: O ATMEGA328 não tem opção de 3-state, porém podemos simular esta condição definindo pinos como entrada ao invés de saídas!
No exemplo deste artigo eu estou utilizando uma placa chamada Fritzen Proto, que é compatível com Arduno UNO (mesmo bootloader) está disponível para compra neste link. Veja o circuito montado abaixo.
O código segue abaixo (e também está disponível no GitHub do FritzenLab).
E o resultado são os 8 LED’s piscando em sequência, no tempo definido no sketch!
Deixo para vocês alguns exemplos de produtos comerciais da empresa ADAFRUIT utilizando (muito bem por sinal) a tecnologia do Charlieplex: link aqui.
E não se esqueçam também: se precisarem comprar componentes eletrônicos e Arduino, utilizem os meus links! assim eu ganho um percentual sobre cada compra e invisto em melhorar o blog!!.