Fala Pessoal! Beleza? 🙂
Bom, hoje venho falar sobre mais um tipo de LED, ou melhor, mais um tipo de módulo para Arduino e outros embarcados: LEDs do tipo RGB – e pra ficar ainda mais bacana o contexto deste post, a “barrinha/régua” de LEDs que iremos utilizar neste pequeno circuito, utiliza LEDs totalmente “endereçáveis” do modelo WS2812! 💡
Pro pessoal que ainda não escutou sobre a palavra “led endereçável“, ou que não tenha conhecimento básico do que seja esse conceito, basicamente se consiste no seguinte:
→ Cada um dos LEDs da régua/fita/barra tem embutido em seu encapsulamento um chip de driver, que se chama WS2812 (datasheet), e é exatamente este “microchip” que permite que possamos atribuir uma cor diferente do tipo RGB (vermelho, verde e azul), para cada um dos LEDs e mais, teremos o poder de controlar a luminosidade de cada um dos LEDs individualmente! 😀 Com isto podemos criar efeitos luminosos dos mais variados e observar a incrível variação de cores que estes LEDs endereçáveis WS2812 podem proporcionar ao nosso protótipo. Vejamos um pequeno exemplo abaixo:

Régua de LEDs endereçáveis WS2812
Nesta régua de LEDs RGB (e várias outras de funcionamento similar), os LEDs modelo WS2812 (ou WS2812B) têm suas conexões feitas em série. Como falei acima, os LEDs têm um chip embutido e isso nos permite controlar “grande” número de LEDs RGB utilizando apenas um pino digital da nossa placa Arduino.
Veja fotos da régua de LEDs RGB (x8) modelo WS2812 – 5050:

Detalhes sobre o Módulo LED WS2812
Como podemos observar na imagem acima, este módulo possui “pinos” de Entrada e Saída, permitindo que a gente possa ligar, ou melhor dizendo, interconectar vários módulos iguais tipo “em cascata” utilizando simplesmente um pino da placa Arduino! 😀
ESQUEMA E CÓDIGO PARA FUNCIONAMENTO DA BARRA DE LEDs WS2812:
O esquemático como vocês já viram, está no topo deste post (primeira imagem).
O código para controlar a nossa régua de LEDs necessita de uma biblioteca externa ao Arduino, então, primeiramente vamos baixar e instalar a biblioteca FastLED conforme as indicações abaixo:
→ Clique aqui para baixar a biblioteca FastLED. Vamos obter uma pasta compactada (.zip)
→ Descompacte o arquivo .zip e devemos obter uma pasta descompactada de nome FastLED-master
→ Renomeamos a pasta de FastLED-master para apenas FastLED
→ Movemos a nova pasta FastLED para a pasta “libraries” da IDE do nosso Arduino
→ Finalmente, reabrimos a IDE Arduino.
Depois de termos a biblioteca necessária devidamente instalada, podemos verificar e carregar o código abaixo para nossa placa Arduino.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
/* -------------------------------------------- * Author: Rui Santos - randomnerdtutorials.com * -------------------------------------------- * ============================================ * PROJETO: BARRA DE LED RGB WS2812 E ARDUINO * * ============================================ * Modificado e Atualizado por: Rodrigo Costa.* * -------------------------------------------- * Detalhes: https://eletronicaparatodos.com * * http://eletronicaparatodos.net * * -------------------------------------------- * REV.01 - 14/04/2017. * * ============================================ */ #include <FastLED.h> #define LED_PIN 5 //DEFINIMOS O PINO DIGITAL "5" DO ARDUINO PARA SER O NOSSO "DIN" DO MÓDULO WS2812 // Atenção! Altere a variável abaixo "NUM_LEDS" para o número de LEDs RGB que a sua régua de LEDs realmente tem #define NUM_LEDS 8 // O NUMERO DE LEDs QUE TEM NA NOSSA "REGUA/TIRA" DE LEDs. #define BRIGHTNESS 255 // AUMENTA OU DIMINUI A "VELOCIDADE" QUE OS LEDs MUDAM DE CORES (1 ~ 255). #define LED_TYPE WS2812 // O MODELO DA NOSSA REGUA DE LEDs (PODERIA SER A WS2812B). #define COLOR_ORDER GRB // A ORDEM DAS CORES DA TIRA DE LEDs. CRGB leds[NUM_LEDS]; #define UPDATES_PER_SECOND 60 //ATUALIZACAO DO DISPLAY DE LEDs EM 1 SEGUNDO. CRGBPalette16 currentPalette; TBlendType currentBlending; void setup() { delay(3000); //Atraso de segurança na inicialização FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); FastLED.setBrightness( BRIGHTNESS ); currentPalette = RainbowColors_p; //PALHETA DE CORES SENDO UTILIZADA ATUALMENTE! //currentPallete = RainbowStripeColors_p; //OUTRA PALHETA DE CORES QUE PODE SER UTILIZADA. //currentPalette = RainbowColors_p; //OUTRA PALHETA DE CORES QUE PODE SER UTILIZADA. currentBlending = LINEARBLEND; } void loop(){ ChangePalettePeriodically(); static uint8_t startIndex = 0; startIndex = startIndex + 1; FillLEDsFromPaletteColors(startIndex); FastLED.show(); FastLED.delay(2000 / UPDATES_PER_SECOND); } void FillLEDsFromPaletteColors(uint8_t colorIndex){ //uint8_t brightness = 13; //AUMENTA OU DIMINUI A "INTENSIDADE DE LUMINOSIDADE" QUE OS LEDs EMITEM (1 ~ 255) R.COSTA. uint8_t brightness = 200; //AUMENTA OU DIMINUI A "INTENSIDADE DE LUMINOSIDADE" QUE OS LEDs EMITEM (1 ~ 255) R.COSTA. for( int i = 0; i < NUM_LEDS; i++){ leds[i] = ColorFromPalette( currentPalette, colorIndex, brightness, currentBlending); colorIndex += 3; } } // Existem várias palhetas de efeitos luminosos e diferentes cores demonstradas aqui. // // a biblioteca FastLED varias palhetas já configuradas como opcao de uso, como por exemplo: // // RaibowColors_p, RainbowColors_p, OceanColors_p, CloudColors_p, LavaColors_p, ForestColors_p and PartyColors_p // // Além disso, você pode digitar ou definir manualmente suas próprias palhetas de cores. void ChangePalettePeriodically(){ uint8_t secondHand = (millis() / 1000) % 60; static uint8_t lastSecond = 99; if(lastSecond != secondHand){ lastSecond = secondHand; if(secondHand == 0){ currentPalette = RainbowColors_p; currentBlending = LINEARBLEND;} } } |
💡 OBSERVAÇÃO IMPORTANTE: você precisa alterar a linha 21 do código #define NUM_LEDS
para o número de LEDs que sua régua de LEDs RGB tem na realidade, neste exemplo, a minha régua tem 8 LEDs.
VÍDEO MOSTRANDO O FUNCIONAMENTO DA BARRA DE LEDs WS2812:
Pessoal, e aí, o que acharam? Se gostaram Curtam, Compartilhem e façam seus comentários! Todos são muito bem-vindos(as)! 🙂
- Medindo e Monitorando a Temperatura com Arduino (Sensor LM35) - 5 de setembro de 2021
- Controle de Cargas através de Entrada Analógica com Arduino - 30 de agosto de 2021
- REVIEW E DICAS – ALICATE AMPERÍMETRO (UNI-T UT210E PRO) - 28 de agosto de 2021
Olá, comprei uma fita de led igual a esse do post, porém na hora de soldar acabei danificando o ponto de solda do DIN. Seria possível eu usar a DOUT para fazer o teste? Se sim, o que teria que mudar no programa ou circuito?
Fala Jean! Tudo Bom?
Seja muito bem vindo ao nosso Blog – Eletrônica Para Todos!
Rapaz, respondendo sua pergunta, sinceramente não acredito que você obtenha êxito utilizando o pino de “saída” (DOut) como se fosse o pino de “entrada” (DIn), infelizmente.
Agora, se você tem uma “fita de LEDs” e não uma “régua” como apresentado no post, então a história muda! Isso porque a fita pode ser “cortada” e já a régua não.
PS: A impossibilidade de se utilizar o DOut como entrada provém de que devemos lembrar que LEDs são diodos, e desta forma, também possuem polaridade (+) e (-), ou seja, invertendo a ligação, não conseguimos “acender” o LED.
É isso aí!
Sucesso!
Ahh! Se ainda não for Inscrito no Canal, deixo o convite para se Inscrever e clicar no sininho para receber todas as próximas atualizações automaticamente!
Um Abraço,
Rodrigo Costa do Blog, Fanpage e Instagram,
———————————————————————————
https://EletronicaParaTodos.com
https://facebook.com/EletronicaParaTodosBR
https://instagram.com/EletronicaParaTodosBrasil
———————————————————————————
▶Colabore para o Crescimento do Canal:
➤https://apoia.se/eletronicaparatodos
➤https://pag.ae/7UyMZmYb4