/*
######################################################
Controlador LED endereçável
Mario.Parente
Data: 07/06/2023
Controlando LED endereçável de forma fácil com vários modos de controle
"Testado em 02/12/23 com Esp-nodemcu (Asustes nos PIN's A1 > A0, 5 > D4)" - A0 está em GND sem variação real
#######################################################
*/
//Declaração Inicial
#include <FastLED.h> // Biblioteca de apoio
#define LED_PIN 5 // Define o pino de controle dos leds
#define NUM_LEDS 16 // Define a quantidade de LED
CRGB leds[NUM_LEDS]; // Declaração de Opjeto
//Função de configuração e que serão executados somente uma vez
void setup() {
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS); // Inicia a Objeto
randomSeed(analogRead(A1)); // Função de semente da aleatoriedade
}
//Função de limpeza dos LED
void Enviar_Comando(){
FastLED.clear(); // Limpa a memoria dos Buff dos LED
FastLED.show(); // Envia para todos os LED
delay(100); // Aguarda 1/10 de Segundo
}
//Função que serão executados infinitamente
void loop() {
//###### Cores LED a LED 'aleatorias' com saturação e brilho maximo
for (int i = 0; i <=15; i++){ //
leds[i] = CHSV(random(255), 255, 255); //
FastLED.show(); //
delay(100); //
}
//###### Limpa dos LED's #################
Enviar_Comando();
//###### Cirdulo de dor Azul sentido horario
for (int i = 0; i <= 16; i++) {
//###### Comente uma linha ##################
leds[i] = CRGB ( 0, 0, 255); //Cor solida
//leds[i] = CHSV(random(255), 255, 255); //Cor aleatoria
//###########################################
FastLED.show();
delay(50);
}
//###### Limpa dos LED's #################
Enviar_Comando();
//###### Cirdulo de dor Vermelha sentido horario
for (int i = 16; i >= 0; i--) {
//###### Comente uma linha ###################
leds[i] = CRGB ( 255, 0, 0); //Cor solida
//leds[i] = CHSV(random(255), 255, 255); //Cor aleatoria
//############################################
FastLED.show();
delay(50);
}
//###### Limpa dos LED's #################
Enviar_Comando();
//###### LED correndo
for (int i = -1; i <= 15; i++) {
//###### Comente uma linha #################
leds[i+1] = CRGB ( 0, 255, 0); //Cor solida
//leds[i] = CHSV(random(255), 255, 255); //Cor aleatoria
//#######################################
leds[i-1] = CRGB ( 0, 0, 0);
FastLED.show();
delay(50);
}
//###### Limpa dos LED's #################
Enviar_Comando();
//###### Percorrendo todo o espectro de cores com saturação e brilho maximo
for (int i = 0; i <= 255; i++) {
//static uint8_t i = 0;
FastLED.showColor(CHSV(i, 255, 255));
delay(5);
}
//###### Limpa dos LED's #################
Enviar_Comando();
}