Módulo Painel 16 Leds RGB WS8212 – Tudo que você precisa saber !!!

     0

O modulo endereçável de LED chegou recentemente aproveitamos para testar, este modulo possui 16 LED RGB no formato SMD 5050, tendo potencia total da placa de 0,3W, apesar de em numero parecer ter pouca potencia, durante o uso, ficamos bem surpresos com a intensidade dos LEDs.

Mas como que funciona?

O Modulo é composto de 16 LEDs, cada Led é formado por 3 led de cores: Vermelho (No inglês, Red), Verde (Green) e o Azul (Blue), e por isso é chamado de RGB. Junto a cada LED existe um CI (Circuito Integrado) WS8212. Este CI que controla a alimentação de cada LED de forma digital usando PWM, assim você pode controlar todos os LEDs independentes, a cor do LED e a intensidade de cada cor, as 3 cores do RGB associados permite a possibilidade de usar 16.777.216 tons de cores diferentes por led.


O Cada CI tem um endereço, um numero. É este endereço que vai te permitir você controlar LED a LED usando somente um único fio. O controle é através do protocolo NZR de comunicação, aqui você não não precisa se preocupar, pois a própria biblioteca do Arduino vai definir pra você.
O comando para acionamentos dos LEDs é enviado em um padrão de 24 Bits isso permite que você possa comandar até 1024 LEDS e ainda você pode associar vários módulos, podendo criar, painéis com efeitos animados, imagens, abrindo assim uma infinita possibilidade de opções.

Biblioteca

Para poder usar este modulo vamos precisar usar a biblioteca Adafruit_NeoPixel.h, que é fácil de ser instalado na sua IDE.

Siga os seguintes passos:

  1. Abra a IDE do Arduino;
  2. Na barra de tarefas, clique em “Sketch”, depois em “Incluir Biblioteca” e por fim em “Gerenciar Bibliotecas”;
  3. Na tela que se segue, pesquise por Adafruit_NeoPixel

 

 

Vamos então, escrever o programa, na IDE do Arduino…
Código bem simples, para nos entendermos seu funcionamento, este código faz com que os LEDs fiquem trocando de cor de forma sequencial.

#include <Adafruit_NeoPixel.h>
 
#define PIN 2
#define NUMLED 16
#define DELAYLOOP 50    // define tempo entre cada acionamento de LED
 
Adafruit_NeoPixel pixels(NUMLED, PIN, NEO_GRB + NEO_KHZ800);

int red = 50, blue = 100, green = 15;   // Cria Variaveis
 
void setup() 
{
  pixels.begin();       //Inicia comunicação com os LED
}
 
void loop() 
{
  //pixels.clear();       este comando apaga todos os leds e começa do zero
 
  if(red > 150)         //Define que ao chegar ao valor de 150, valor de RED volte a 0
  {
    red = 0;
  }
  if(blue > 150)        //Define que ao chegar ao valor de 150, valor de blue volte a 0
  {
    blue = 0;
  }
  if(green > 150)       //Define que ao chegar ao valor de 150, valor de Green volte a 0
  {
    green = 0;
  }
 
  for(int i=0; i<NUMLED; i++)
  { 
    red = red + 1;
    blue = blue + 3;
    green = green +2;
    
    pixels.setPixelColor(i, pixels.Color(blue, red, green));
    pixels.show();
 
    delay(DELAYLOOP);
  }
}

Resultado final foi este, desculpe pela qualidade, mas foi difícil conseguir focar a câmera devido a intensidade do LED.

Explicando o Código

#define PIN 2 – Define o pino 2 como saída de sinal para os LED endereçáveis
#define NUMLED – Define o numero de LEDs que vamos controlar com nosso programa
if(red > 150) – Define que quando o led vermelho chegar ao valor de 150, ele vai executar o comando que está definido, vai receber o valor de 0. Lembrando que você pode definir este valor até 256, deixamos em 150 durante os testes devido a intensidade do LED.

for(int i=0; i<NUMLED; i++) – “Prende” o programa em loop, para que ele de os comandos de cada LED, este loop é definido pela palavra chave NUMLED. OU seja, no caso deste código vai repetir 16 vezes, já que temos 16 LEDS.

Ficou com alguma duvida, deixe nos comentários que te explicamos.

Que tal aplicarmos tudo o que vimos em um projeto? Confere um exemplo de um game que você pode montar:

Escrito por: Venâncio Miranda
Revisado por: Jefferson Proesi

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *