Controlando “infinitos” LEDs com Arduino I


Como parte de um projeto de automação de uma mesa concebida pela Mariana Lourenço, aluna de design da UNESP-Bauru, foi necessário ligar 24 LEDs RGB num Arduino Duemillanove. Para isso, precisaria de 72 portas, já que cada LED tem quatro pinos, um para cada cor e o comum, que ainda por cima pode ser positivo (catodo) ou negativo (anodo), dependendo do fabricante. Como esse Arduino tem apenas 14 portas digitais (19, se contarmos as analógicas, que podem ser usadas como digitais) e eu tinha ainda que ligar um shield MP3, seis sensores de luminosidade (LDR) e três sonares, nem se eu usasse um Arduino Mega seria possível ligar tudo nele.
Ou seja, teria que usar multiplexação.
No excelente livro Arduino Básico, capítulo 6, Contadores Binários, tem uma implementação de multiplexação para controlar LEDs usando o 74HC595, um CI barato e fácil de encontrar. A partir dos exemplos do livro, que usam um e dois desse CI para controlar 8 e 16 LEDs monocromáticos, eu construí uma lib do Arduino para controlar os LEDs RGB. Essa biblioteca pode ser facilmente adaptada para controlar LEDs monocromáticos tb.

O CI 74HC595

Esse CI permite que você, com apenas três pinos digitais do Arduino, controle até oito portas distintas. E ainda pode-se ligar mais de um em série (em tese, “infinitos”), de maneira a controlar as portas de LED que eu preciso. Abaixo, esquema do circuito com cinco LED ligados. 

Observe que os dois primeiros LED são catodo comum e os três últimos, anodo comum. Os dois resistores funcionam como limitadores de corrente para os LED.

Comentários

  1. Cara, muito obrigado por compartilhar sua idéia, fiquei muito feliz particularmente porque eu comprei sem querer 125 leds RGB, so que Anodo Comum, e vc explica como liga-los... muito obrigado mesmo..

    abraço...

    ResponderExcluir
    Respostas
    1. Anônimo, por nada, que bom que a informação foi-lhe útil. Passe por aqui de vez em quando, e consulte os outros posts. E, em caso de dúvida, é só escrever.

      [],

      Mauro

      Excluir
  2. Muito massa essa saída para controlar os led's RGB, mas eu so tenho uma duvida de como ficou esse projeto. pq vc usa as portas digitais PWM ?, consegue controlar todos os leds individualmente ? intensidade e cor ?

    ResponderExcluir
    Respostas
    1. Olha, o uso das portas PWM foi coincidência. A minha rotina não controla a intensidade do LED. Para fazer isso teria que ser uma lib bem mais complicada, para poder multiplexar o PWM. Acho que deve ser possível, pelo menos para controlar menos níveis de intensidade, por exemplo, 4 níveis de brilho por cor.

      Excluir
  3. Muito bom esse CI, eu uso ele pra ler varios sensores ao mesmo tempo! parabens pelo blog!

    ResponderExcluir
  4. Muito bom esse CI, eu uso ele pra ler varios sensores ao mesmo tempo! parabens pelo blog!

    ResponderExcluir
  5. Muito bom esse CI, eu uso ele pra ler varios sensores ao mesmo tempo! parabens pelo blog!

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

Controle PID de Potência em Corrente Alternada - Arduino e TRIAC - Parte III

Controle PID de Potência em Corrente Alternada - Arduino e TRIAC - Parte I

Dividindo um programa (sketch) do Arduino em mais de um arquivo