24#define NUM_LEDS ((WIDTH) * (HEIGHT))
25#define IS_SERPINTINE true
82 .crgbMap = WaveCrgbGradientMapPtr::New(electricBlueFirePal),
91 .crgbMap = WaveCrgbGradientMapPtr::New(electricGreenFirePal),
98 auto screenmap =
xyMap.toScreenMap();
99 screenmap.setDiameter(.2);
122 uint8_t min_x = perc *
WIDTH;
123 uint8_t max_x = (1 - perc) *
WIDTH;
124 uint8_t min_y = perc *
HEIGHT;
125 uint8_t max_y = (1 - perc) *
HEIGHT;
126 int x = random(min_x, max_x);
127 int y = random(min_y, max_y);
137 pointTransition.
trigger(now, total, 0, 0);
140 if (!pointTransition.
isActive(now)) {
144 int mid_x =
WIDTH / 2;
147 int amount =
WIDTH / 2;
148 int start_x = mid_x - amount;
149 int end_x = mid_x + amount;
150 int start_y = mid_y - amount;
151 int end_y = mid_y + amount;
152 int curr_alpha = pointTransition.
update(now);
153 int left_x = map(curr_alpha, 0, 255, mid_x, start_x);
154 int down_y = map(curr_alpha, 0, 255, mid_y, start_y);
155 int right_x = map(curr_alpha, 0, 255, mid_x, end_x);
156 int up_y = map(curr_alpha, 0, 255, mid_y, end_y);
158 float curr_alpha_f = curr_alpha / 255.0f;
160 float valuef = (1.0f - curr_alpha_f) *
fancyIntensity.value() / 255.0f;
163 for (
int x = left_x - span;
x < left_x + span;
x++) {
168 for (
int x = right_x - span;
x < right_x + span;
x++) {
173 for (
int y = down_y - span;
y < down_y + span;
y++) {
178 for (
int y = up_y - span;
y < up_y + span;
y++) {
227 static uint32_t nextTrigger = 0;
228 uint32_t trigger_delta = nextTrigger - now;
229 if (trigger_delta > 10000) {
234 if (now >= nextTrigger) {
237 uint32_t min_rand = 400 *
speed;
238 uint32_t max_rand = 2000 *
speed;
240 uint32_t min =
MIN(min_rand, max_rand);
241 uint32_t max =
MAX(min_rand, max_rand);
245 nextTrigger = now + random(min, max);
252 uint32_t now = millis();
CFastLED FastLED
Global LED strip management instance.
central include file for FastLED, defines the CFastLED class/object
XYMap xyMap(HEIGHT, WIDTH, SERPENTINE)
UISlider blurAmount("Global Blur Amount", 0, 0, 172, 1)
XYMap xyMap(WIDTH, HEIGHT, IS_SERPINTINE)
UISlider blurPassesLower("Wave Lower: Blur Passes", 1, 1, 10, 1)
UISlider blurPasses("Global Blur Passes", 1, 1, 10, 1)
UISlider blurAmountLower("Wave Lower: Blur Amount", 0, 0, 172, 1)
UISlider speedLower("Wave Lower: Speed", 0.26f, 0.0f, 1.0f)
UISlider blurPassesUpper("Wave Upper: Blur Passes", 1, 1, 10, 1)
WaveFx waveFxLower(xyRect, WaveFx::Args{ .factor=SUPER_SAMPLE_4X,.half_duplex=true,.speed=0.18f,.dampening=9.0f,.crgbMap=WaveCrgbGradientMapPtr::New(electricBlueFirePal), })
UISlider fancyParticleSpan("Fancy Particle Span", 0.06f, 0.01f, 0.2f, 0.01f)
UICheckbox autoTrigger("Auto Trigger", true)
UICheckbox halfDuplexUpper("Wave Upper: Half Duplex", true)
UISlider speedUpper("Wave Upper: Speed", 0.12f, 0.0f, 1.0f)
UITitle title("FxWave2D Demo")
WaveFx waveFxUpper(xyRect, WaveFx::Args{ .factor=SUPER_SAMPLE_4X,.half_duplex=true,.speed=0.25f,.dampening=3.0f,.crgbMap=WaveCrgbGradientMapPtr::New(electricGreenFirePal), })
void processAutoTrigger(uint32_t now)
UIButton button("Trigger")
UISlider fancySpeed("Fancy Speed", 796, 0, 1000, 1)
XYMap xyRect(WIDTH, HEIGHT, false)
UISlider dampeningUpper("Wave Upper: Dampening", 8.9f, 0.0f, 20.0f, 0.1f)
UICheckbox easeModeSqrt("Ease Mode Sqrt", false)
UIButton buttonFancy("Trigger Fancy")
UISlider fancyIntensity("Fancy Intensity", 32, 1, 255, 1)
UISlider triggerSpeed("Trigger Speed",.5f, 0.0f, 1.0f, 0.01f)
UIDescription description("Advanced layered and blended wave effects.")
UISlider blurAmountUpper("Wave Upper: Blur Amount", 95, 0, 172, 1)
SuperSample getSuperSample()
UISlider superSample("SuperSampleExponent", 1.f, 0.f, 3.f, 1.f)
void applyFancyEffect(uint32_t now, bool button_active)
UISlider dampeningLower("Wave Lower: Dampening", 9.0f, 0.0f, 20.0f, 0.1f)
UICheckbox halfDuplexLower("Wave Lower: Half Duplex", true)
LED controller for WS2812 LEDs with GRB color order.
uint8_t update(uint32_t now) override
Compute current 0–255 output based on how much time has elapsed since trigger().
bool isActive(uint32_t now) const override
void trigger(uint32_t now) override
Call this when you want to (re)start the ramp cycle.
#define DEFINE_GRADIENT_PALETTE(X)
Defines a static RGB palette very compactly using a series of connected color gradients.
Implements a simple red square effect for 2D LED grids.
Representation of an RGB pixel (Red, Green, Blue)