Created
September 15, 2016 13:38
-
-
Save jasoncoon/d54216fc8ce2eb0ecee87f8002d421c5 to your computer and use it in GitHub Desktop.
Simple FastLED "sunrise" example that fades from black to red, orange, yellow, and white.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "FastLED.h" | |
// How many leds in your strip? | |
#define NUM_LEDS 60 | |
// For led chips like Neopixels, which have a data line, ground, and power, you just | |
// need to define DATA_PIN. For led chipsets that are SPI based (four wires - data, clock, | |
// ground, and power), like the LPD8806 define both DATA_PIN and CLOCK_PIN | |
#define DATA_PIN 3 | |
#define CLOCK_PIN 13 | |
// Define the array of leds | |
CRGB leds[NUM_LEDS]; | |
void setup() { | |
// Uncomment/edit one of the following lines for your leds arrangement. | |
// FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS); | |
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS); | |
// FastLED.addLeds<APA104, DATA_PIN, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<WS2801, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<SM16716, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<LPD8806, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<P9813, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<APA102, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<DOTSTAR, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); | |
// FastLED.addLeds<DOTSTAR, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); | |
} | |
void loop() { | |
sunrise(); | |
FastLED.show(); | |
} | |
void sunrise() { | |
// total sunrise length, in minutes | |
static const uint8_t sunriseLength = 30; | |
// how often (in seconds) should the heat color increase? | |
// for the default of 30 minutes, this should be about every 7 seconds | |
// 7 seconds x 256 gradient steps = 1,792 seconds = ~30 minutes | |
static const uint8_t interval = (sunriseLength * 60) / 256; | |
// current gradient palette color index | |
static uint8_t heatIndex = 0; // start out at 0 | |
// HeatColors_p is a gradient palette built in to FastLED | |
// that fades from black to red, orange, yellow, white | |
// feel free to use another palette or define your own custom one | |
CRGB color = ColorFromPalette(HeatColors_p, heatIndex); | |
// fill the entire strip with the current color | |
fill_solid(leds, NUM_LEDS, color); | |
// slowly increase the heat | |
EVERY_N_SECONDS(interval) { | |
// stop incrementing at 255, we don't want to overflow back to 0 | |
if(heatIndex < 255) { | |
heatIndex++; | |
} | |
} | |
} |
Hi
I'm looking to set up a sunrise effect in FastLED via ESPHome.
Can I (and how would I) use this script somehow within ESPHome?
Kr
PS: can ColorFromPaletteExtended()
(FastLED/FastLED#202) be integrated in this?
COuld be a dumb question but how do i speed this up? i have changed sunrise length but i just see white
Setting the duration too low will cause interval
to be 0 hence why immediately white. I suggest to just temporarily hardcode the interval to 1 if you want to speed it up. The full runtime will be about 4 min 16 secs
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You turn them on with
FastLED.show();