Manual
do
Maker
.
com
São muito bonitos esses LEDs RGB endereçáveis, mas não tem a menor simplicidade sua configuração - exceto você use essa biblioteca da NeoPixel para Arduino (ufa), e com versão inicial para ESP8266!
Quando a simplicidade é tanta (graças a algumas bibliotecas que em 99% dos casos já existem pra Arduino) eu não costumo escrever posts a respeito, mas não poderia deixar de falar desses LEDs endereçáveis, que você encontra em nossos parceiros do carrossel no início de cada página.
Esses LEDs recebem 5V de entrada e já vem com um controlador (obviamente), assim como com os resistores e um dissipador. Você pode adquirir esses individuais do link acima e fazer wareables como botões da roupa ou qualquer outro ítem que sua criatividade lhe permitir.
Em projetos comuns, a vantagem é que você poderá acender diversos destes sem a necessidade de dispensar uma série de pinos de I/O. E para fazer o start de seus projetos, você poderá beneficiar-se dos exemplos disponíveis com a biblioteca, baixando-a do link citado no primeiro parágrafo.
Olhando atrás dele, você notará 6 conexões, sendo 5V,Din e GND na entrada e esses 5V seguem pelo lado oposto junto ao GND e Dout. Desse modo:
Alguns cuidados são necessários, como evitar uma distância grande entre o LED primário e o Arduino, fornecer uma alimentação externa para evitar consumo demasiado de corrente provinda do Arduino, tornar os grounds comuns.
Se você pretende dispor de forma distribuida, esses "botões" são os ideias. Se pretende fazer uma série em linha, sugiro essa barra de 8 LEDs (são os mesmos LEDs porém em um circuito de 8). E se quiser uma matriz, também RGB endereçável, sugiro essa belezinha aqui.
Vou deixar como exemplo um código ridiculamente simples, para que você veja o quão fácil é manipular esses LEDs com a biblioteca:
#include <Adafruit_NeoPixel.h>
#include <avr/power.h>
//pino do arduino
#define PIN 7
// numero de LEDs (NeoPixel) utilizados. comeca em 0 na leitura
#define NUMPIXELS 8
//RGB - 8 bits (0 a 255)
int R = 0;
int G = 0;
int B = 0;
//cria uma instancia
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
pixels.begin(); // inicia a lib
}
void loop() {
for(int i=0;i<NUMPIXELS;i++){
for (int r=0;r<256;r++){
R = r;
pixels.setPixelColor(i, pixels.Color(R,G,B));
pixels.show();
delay(5);
}
for (int g=0;g<256;g++){
R--;
G = g;
pixels.setPixelColor(i, pixels.Color(R,G,B));
pixels.show();
delay(5);
}
for (int b=0;b<256;b++)
G--;
B = b;
pixels.setPixelColor(i, pixels.Color(R,G,B));
pixels.show();
delay(5);
}
delay(300);
}
}
Basicamente, um loop está trocando o pixel, o outro loop incrementa uma cor e os loops seguintes, adicionalmente decrementam a cor anterior. Nesse exemplo você consegue perceber que o controle do tempo de cada e do tempo de cada pixel pode ser determinado sem complicações. Espero que se divirta e crie alguma coisa que inove um pouco sua árvore de natal nesse final de ano, porque ninguém aguenta mais esse pisca-pisca verde com lampadinhas de vidro...
Inscreva-se no nosso canal Manual do Maker Brasil no YouTube.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.