Your cart is currently empty!
RedPill ESP32-S3 – RGB LED Example – Arduino
This demo is a copy of the ColorPalette example that comes with the FastLED library.
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> | |
#define LED_PIN LED_BUILTIN // 3 | |
#define NUM_LEDS 1 | |
#define BRIGHTNESS 64 | |
#define LED_TYPE SK6812 | |
#define COLOR_ORDER GRB | |
CRGB leds[NUM_LEDS]; | |
#define UPDATES_PER_SECOND 100 | |
CRGBPalette16 currentPalette; | |
TBlendType currentBlending; | |
extern CRGBPalette16 myRedWhiteBluePalette; | |
extern const TProgmemPalette16 myRedWhiteBluePalette_p | |
PROGMEM; | |
void setup() { | |
delay(2000); // power-up safety delay | |
FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); | |
FastLED.setBrightness(BRIGHTNESS); | |
currentPalette = RainbowColors_p; | |
currentBlending = LINEARBLEND; | |
} | |
void loop() { | |
ChangePalettePeriodically(); | |
static uint8_t startIndex = 0; | |
startIndex = startIndex + 1; /* motion speed */ | |
FillLEDsFromPaletteColors(startIndex); | |
FastLED.show(); | |
FastLED.delay(1000 / UPDATES_PER_SECOND); | |
} | |
void FillLEDsFromPaletteColors(uint8_t colorIndex) { | |
uint8_t brightness = 255; | |
for (int i = 0; i < NUM_LEDS; ++i) { | |
leds[i] = ColorFromPalette(currentPalette, colorIndex, brightness, currentBlending); | |
colorIndex += 3; | |
} | |
} | |
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; | |
} | |
if (secondHand == 10) { | |
currentPalette = RainbowStripeColors_p; | |
currentBlending = NOBLEND; | |
} | |
if (secondHand == 15) { | |
currentPalette = RainbowStripeColors_p; | |
currentBlending = LINEARBLEND; | |
} | |
if (secondHand == 20) { | |
SetupPurpleAndGreenPalette(); | |
currentBlending = LINEARBLEND; | |
} | |
if (secondHand == 25) { | |
SetupTotallyRandomPalette(); | |
currentBlending = LINEARBLEND; | |
} | |
if (secondHand == 30) { | |
SetupBlackAndWhiteStripedPalette(); | |
currentBlending = NOBLEND; | |
} | |
if (secondHand == 35) { | |
SetupBlackAndWhiteStripedPalette(); | |
currentBlending = LINEARBLEND; | |
} | |
if (secondHand == 40) { | |
currentPalette = CloudColors_p; | |
currentBlending = LINEARBLEND; | |
} | |
if (secondHand == 45) { | |
currentPalette = PartyColors_p; | |
currentBlending = LINEARBLEND; | |
} | |
if (secondHand == 50) { | |
currentPalette = myRedWhiteBluePalette_p; | |
currentBlending = NOBLEND; | |
} | |
if (secondHand == 55) { | |
currentPalette = myRedWhiteBluePalette_p; | |
currentBlending = LINEARBLEND; | |
} | |
} | |
} | |
void SetupTotallyRandomPalette() { | |
for (int i = 0; i < 16; ++i) { | |
currentPalette[i] = CHSV(random8(), 255, random8()); | |
} | |
} | |
void SetupBlackAndWhiteStripedPalette() { | |
// 'black out' all 16 palette entries... | |
fill_solid(currentPalette, 16, CRGB::Black); | |
// and set every fourth one to white. | |
currentPalette[0] = CRGB::White; | |
currentPalette[4] = CRGB::White; | |
currentPalette[8] = CRGB::White; | |
currentPalette[12] = CRGB::White; | |
} | |
void SetupPurpleAndGreenPalette() { | |
CRGB purple = CHSV(HUE_PURPLE, 255, 255); | |
CRGB green = CHSV(HUE_GREEN, 255, 255); | |
CRGB black = CRGB::Black; | |
currentPalette = CRGBPalette16( | |
green, green, black, black, | |
purple, purple, black, black, | |
green, green, black, black, | |
purple, purple, black, black); | |
} | |
const TProgmemPalette16 myRedWhiteBluePalette_p | |
PROGMEM = | |
{ | |
CRGB::Red, | |
CRGB::Gray, // 'white' is too bright compared to red and blue | |
CRGB::Blue, | |
CRGB::Black, | |
CRGB::Red, | |
CRGB::Gray, | |
CRGB::Blue, | |
CRGB::Black, | |
CRGB::Red, | |
CRGB::Red, | |
CRGB::Gray, | |
CRGB::Gray, | |
CRGB::Blue, | |
CRGB::Blue, | |
CRGB::Black, | |
CRGB::Black | |
}; |
Leave a Reply