quinta-feira, 15 de março de 2018

Ensaio prático do LED - RGB WS2812B

O LED - RGB WS2812B é um dos LED's, se não mesmo o LED mais avançado que podemos encontrar no mercado no que toca à sua simplicidade, tamanho e reprodução de cores. 


A sua grande vantagem é a capacidade de podermos controlar um ou mais destes LED’s recorrendo a apenas um fio de sinal ou seja, com apenas 3 pinos sendo 2 da alimentação (+5V e GND) e um terceiro de comunicação (Din) podemos controlar um ou mais destes LED’s de forma autónoma, ou seja mesmo ligados em série podemos fazer com que cada um dos LED’s assuma uma cor ou estado distintos.

Este é hoje muito popular devido à sua grande facilidade de uso, brilho e efeitos que se conseguem gerar recorrendo uma biblioteca também muito popular escrita pela Adafruit. 

A Adafruit - NeoPixel é uma biblioteca que nos permite controlar estes LED’s de uma forma muito simples, será esta que iremos utilizar nesta publicação.

Vamos agora demonstrar o potencial destes LED’s, mas antes de começar vamos necessitar de fazer o download da biblioteca Adafruit - NeoPixel, para isso basta acedermos ao Github da Adafruit e realizar o download da versão mais recente desta biblioteca.

Montagem dos LED's
Antes de tudo temos de realizar ainda a montagem dos nossos LED’s, ou seja temos de ligar estes em série.

A forma de ligação do WS2812B é algo muito simples pois exige apenas 3 pinos “+5V”, “GND” e “Din” (entrada de sinal), e para se ligarem em série temos apenas que ligar a alimentação de todos em série e o pino Dout do primeiro LED ao pino Din do segundo LED e por ai em diante.


Mais à frente iremos ver como estes são ligados nos esquemas de montagem, mas aqui podemos ver uma sequência de imagem da forma como foram estes interligados em série.

Ensaios Práticos

Material necessário para a elaboração dos ensaios:

    • 4 x LED’s WS2812B;
    • Arduino Uno (ou outro);
    • Breadboard;
    • Vários jumpers (fios condutores para as ligações);
    • Cabo USB;
    • Computador com software do Arduino instalado;

    Ensaio nº1

    Para um primeiro ensaio iremos apenas trabalhar com um LED WS2812B, seguido o esquema abaixo representado.

    Esquema 
    Para o ensaio, foi elaborado o seguinte esquemas de montagem, que ilustra a ligação de um LED ao nosso Arduino.



    Atenção: A montagem dos componentes deve ser feita de acordo com o esquema.

    Código Fonte
    Código desenvolvido e com o qual iremos programar o nosso arduino, este é o responsável pelo funcionamento do sistema de acordo com o pretendido.


    /*----------------------------------------------*/
    /*          TecnoDomos 2018      */
    /*----------------------------------------------*/
    /*  Teste LED - RGB WS2812B */
    /*               Ensaio nº1              */
    /*----------------------------------------------*/
    //includes
    #include <Adafruit_NeoPixel.h>  
    #ifdef __AVR__  
    #include <avr/power.h>  
    #endif  
       
    //Signal pin where we will connect the NeoPixels
    #define PIN 8 //Signal pin  
       
    //Number of NeoPixels we have connected to the Arduino 
    #define NUMPIXELS 1 //Number of connected LED's 
       
    Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);  
    int delayval = 333; //delay  
       
    void setup() 
    {  
      pixels.begin(); //Initializes the NeoPixel library
    }  
       
    void loop() 
    {  
      /*For a set of NeoPixels the first NeoPixel is 0, second is 1, 
      all the way up to the count of pixels minus one*/
      for(int i=0;i<NUMPIXELS;i++)
      {  
        // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255  
        pixels.setPixelColor(i, pixels.Color(255,0,0)); //Red color.  
        pixels.show(); //Sends the updated pixel color to the hardware.  
        delay(delayval); //Delay for a period of time (in milliseconds). 
         
        pixels.setPixelColor(i, pixels.Color(0,255,0)); //Green color.  
        pixels.show(); //Sends the updated pixel color to the hardware.  
        delay(delayval); //Delay for a period of time (in milliseconds).
          
        pixels.setPixelColor(i, pixels.Color(0,0,255)); //Blue color.  
        pixels.show(); //Sends the updated pixel color to the hardware.  
        delay(delayval); //Delay for a period of time (in milliseconds).  
      }  
    }  

    Resultado
    Como podemos ver na seguinte imagem o resultado é a alternância entre as três cores vermelho, verde e azul (RGB).





    Ensaio nº2
    Para o segundo ensaio iremos agora trabalhar com quatro LED WS2812B, seguido o esquema abaixo representado.

    Esquema 
    Para o ensaio, foi elaborado o seguinte esquemas de montagem, que ilustra a ligação dos quatro LED's ao nosso Arduino.


    Atenção: A montagem dos componentes deve ser feita de acordo com o esquema.

    Código Fonte
    Código desenvolvido e com o qual iremos programar o nosso arduino, este é o responsável pelo funcionamento do sistema de acordo com o pretendido

    /*----------------------------------------------*/
    /*          TecnoDomos 2018      */
    /*----------------------------------------------*/
    /*  Teste LED - RGB WS2812B */
    /*               Ensaio nº2              */
    /*----------------------------------------------*/

    //includes
    #include <Adafruit_NeoPixel.h>  
    #ifdef __AVR__  
    #include <avr/power.h>  
    #endif  
       
    //Signal pin where we will connect the NeoPixels
    #define PIN 8 //Signal pin

    //Number of NeoPixels we have connected to the Arduino 
    #define NUMPIXELS 4 //Number of connected LED's
       
    Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);  
       
     int delayval = 555; //delay  
     int i = 0;  
     int j = 1;  
     int l = 2;  
     int k = 3; 
       
     void setup() 
     {  
       pixels.begin(); // This initializes the NeoPixel library.  
     }  
       
     void loop() 
     {     
       // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255  
       pixels.setPixelColor(i, pixels.Color(255,0,0));   //Red
       pixels.setPixelColor(j, pixels.Color(0,255,0));   //Green
       pixels.setPixelColor(l, pixels.Color(0,0,255));   //Blue
       pixels.setPixelColor(k, pixels.Color(255,255,0)); //Yellow
       pixels.show();   
       delay(delayval);  
       
       pixels.setPixelColor(i, pixels.Color(255,255,0)); //Yellow
       pixels.setPixelColor(j, pixels.Color(255,0,0));   //Red
       pixels.setPixelColor(l, pixels.Color(0,255,0));   //Green
       pixels.setPixelColor(k, pixels.Color(0,0,255));   //Blue
       pixels.show();   
       delay(delayval);  
       
       pixels.setPixelColor(i, pixels.Color(0,0,255));   //Blue
       pixels.setPixelColor(j, pixels.Color(255,255,0)); //Yellow
       pixels.setPixelColor(l, pixels.Color(255,0,0));   //Red
       pixels.setPixelColor(k, pixels.Color(0,255,0));   //Green
       pixels.show();   
       delay(delayval); 

       pixels.setPixelColor(i, pixels.Color(0,255,0));   //Green
       pixels.setPixelColor(j, pixels.Color(0,0,255));   //Blue
       pixels.setPixelColor(l, pixels.Color(255,255,0)); //Yellow
       pixels.setPixelColor(k, pixels.Color(255,0,0));   //Red
       pixels.show();   
       delay(delayval);     
     }  

    Resultado
    Como podemos ver na seguinte imagem o resultado deste segundo ensaio passa por fazer piscar cada LED em quatro cores (vermelho, verde, azul e amarelo), alternado a caca 0,5 segundos dando a sensação que as cores estão "a correr" de um LED para o outro.


    Nota: A imagem do LED WS2812B usado para a elaboração dos esquemas é diferente do que realmente utilizamos mas isto apenas se fica  a dever ao componente disponibilizado na aplicação fritzing.


    Vídeo

    No seguinte video podemos ver alguns dos testes feitos com os LED's WS2812B, não sendo propriamente o video dos ensaios acima referidos mas outros.


    Links úteis

        LED - RGB WS2812B
        Datasheet


    Ficheiros para Download

        Código fonte Ensaio Nº1
        Código fonte Ensaio Nº2


    Considerações Finais

    Tal como podemos verificar é muito fácil realizar montagens recorrendo ao LED WS2812B, pois é muito simples tanto ao nível das suas ligações como da sua utilização recorrendo à biblioteca Adafruit - NeoPixel.
    Com o seu grande espectro de cores este permite criar efeitos muito interessantes com apenas um ou mais LED’s, este é um LED com grande potencialidade e que hoje apresenta um custo muito reduzido, sendo que em termos de custos beneficio este ganha sem dúvida a muitos dos outros LED's RGB que podemos encontrar no mercado.



    Esperamos que este artigo tenha sido útil e se gostaram comentem e partilhem. Alguma dúvida ou questão deixem em comentário ou utilizem o formulário de contatos.


    Um bom dia em nome da TecnoDomos.



    Conteúdo redigido ao abrigo do novo Acordo Ortográfico.

    Sem comentários:

    Enviar um comentário