Postagem em destaque

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

Este post é o primeiro de uma série de seis que escrevi tratando de controle de potência e PID (controle proporcional, integral e derivativo...

quinta-feira, 5 de julho de 2012

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.