/*
Forum: https://forum.arduino.cc/t/fastled-blend-ws2812/1420585
Wokwi: https://wokwi.com/projects/450794513036919809
2025/12/19
ec2021
*/
#include <FastLED.h>
constexpr byte LED_PIN = 8;
constexpr int NUM_LEDS = 16;
CRGB leds[NUM_LEDS];
CRGB start_colour = CRGB (250,50,50);
CRGB target_colour = CRGB (50,250,50);
CRGB act_colour;
//constexpr unsigned long completeChangeTimeInMilliSeconds {3600000UL}; // 3600000 for one hour
//constexpr unsigned long completeChangeTimeInMilliSeconds {60000UL}; // 60000 is one minute = 60 seconds
constexpr unsigned long completeChangeTimeInMilliSeconds {6000UL}; // 6000 are 6 seconds
constexpr unsigned long milliSecsPerStep {completeChangeTimeInMilliSeconds/256};
unsigned long lastChange = 0;
int blendAmount = 0;
void setup() {
Serial.begin(115200);
Serial.println("Start");
Serial.print("Change interval = ");
Serial.print(milliSecsPerStep);
Serial.println(" milliseconds");
FastLED.addLeds<WS2812B, LED_PIN, GRB>(leds, NUM_LEDS);
FastLED.setBrightness(255);
setColour(); // Do the first step here
}
void loop() {
if (millis()-lastChange >= milliSecsPerStep){
setColour();
}
}
void setColour(){
lastChange = millis();
Serial.print("blendAmount = ");
Serial.println(blendAmount);
act_colour = blend(start_colour, target_colour, blendAmount);
fill_solid(leds, NUM_LEDS,act_colour);
FastLED.show();
blendAmount++;
blendAmount = blendAmount % 256;
}