Skip to content

Commit 6b607fb

Browse files
authored
refined PS replacement ifdefs (#5103)
* refined PS replacement ifdefs * bugfixes, added glitter and sparkle as they a lightweight (1k of flash)
1 parent e761418 commit 6b607fb

File tree

1 file changed

+34
-26
lines changed

1 file changed

+34
-26
lines changed

wled00/FX.cpp

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,25 @@
1515
#include "fcn_declare.h"
1616

1717
#if !(defined(WLED_DISABLE_PARTICLESYSTEM2D) && defined(WLED_DISABLE_PARTICLESYSTEM1D))
18-
#include "FXparticleSystem.h"
18+
#include "FXparticleSystem.h" // include particle system code only if at least one system is enabled
19+
#ifdef WLED_DISABLE_PARTICLESYSTEM2D
20+
#define WLED_PS_DONT_REPLACE_2D_FX
21+
#endif
22+
#ifdef WLED_DISABLE_PARTICLESYSTEM1D
23+
#define WLED_PS_DONT_REPLACE_1D_FX
24+
#endif
1925
#ifdef ESP8266
2026
#if !defined(WLED_DISABLE_PARTICLESYSTEM2D) && !defined(WLED_DISABLE_PARTICLESYSTEM1D)
21-
#error ESP8266 does not support 1D and 2D particle systems simultaneously. Please disable one of them.
27+
#error ESP8266 does not support 1D and 2D particle systems simultaneously. Please disable one of them.
2228
#endif
2329
#endif
2430
#else
25-
#define WLED_PS_DONT_REPLACE_FX
31+
#define WLED_PS_DONT_REPLACE_1D_FX
32+
#define WLED_PS_DONT_REPLACE_2D_FX
33+
#endif
34+
#ifdef WLED_PS_DONT_REPLACE_FX
35+
#define WLED_PS_DONT_REPLACE_1D_FX
36+
#define WLED_PS_DONT_REPLACE_2D_FX
2637
#endif
2738

2839
//////////////
@@ -768,7 +779,6 @@ uint16_t mode_dissolve_random(void) {
768779
}
769780
static const char _data_FX_MODE_DISSOLVE_RANDOM[] PROGMEM = "Dissolve Rnd@Repeat speed,Dissolve speed;,!;!";
770781

771-
772782
/*
773783
* Blinks one LED at a time.
774784
* Inspired by www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/
@@ -790,7 +800,6 @@ uint16_t mode_sparkle(void) {
790800
}
791801
static const char _data_FX_MODE_SPARKLE[] PROGMEM = "Sparkle@!,,,,,,Overlay;!,!;!;;m12=0";
792802

793-
794803
/*
795804
* Lights all LEDs in the color. Flashes single col 1 pixels randomly. (List name: Sparkle Dark)
796805
* Inspired by www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/
@@ -1765,7 +1774,6 @@ uint16_t mode_tricolor_fade(void) {
17651774
}
17661775
static const char _data_FX_MODE_TRICOLOR_FADE[] PROGMEM = "Tri Fade@!;1,2,3;!";
17671776

1768-
#ifdef WLED_PS_DONT_REPLACE_FX
17691777
/*
17701778
* Creates random comets
17711779
* Custom mode by Keith Lord: https://github.com/kitesurfer1404/WS2812FX/blob/master/src/custom/MultiComet.h
@@ -1804,7 +1812,6 @@ uint16_t mode_multi_comet(void) {
18041812
}
18051813
static const char _data_FX_MODE_MULTI_COMET[] PROGMEM = "Multi Comet@!,Fade;!,!;!;1";
18061814
#undef MAX_COMETS
1807-
#endif // WLED_PS_DONT_REPLACE_FX
18081815

18091816
/*
18101817
* Running random pixels ("Stream 2")
@@ -2131,7 +2138,7 @@ uint16_t mode_palette() {
21312138
}
21322139
static const char _data_FX_MODE_PALETTE[] PROGMEM = "Palette@Shift,Size,Rotation,,,Animate Shift,Animate Rotation,Anamorphic;;!;12;ix=112,c1=0,o1=1,o2=0,o3=1";
21332140

2134-
#ifdef WLED_PS_DONT_REPLACE_FX
2141+
#if defined(WLED_PS_DONT_REPLACE_1D_FX) || defined(WLED_PS_DONT_REPLACE_2D_FX)
21352142
// WLED limitation: Analog Clock overlay will NOT work when Fire2012 is active
21362143
// Fire2012 by Mark Kriegsman, July 2012
21372144
// as part of "Five Elements" shown here: http://youtu.be/knWiGsmgycY
@@ -2218,7 +2225,7 @@ uint16_t mode_fire_2012() {
22182225
return FRAMETIME;
22192226
}
22202227
static const char _data_FX_MODE_FIRE_2012[] PROGMEM = "Fire 2012@Cooling,Spark rate,,2D Blur,Boost;;!;1;pal=35,sx=64,ix=160,m12=1,c2=128"; // bars
2221-
#endif // WLED_PS_DONT_REPLACE_FX
2228+
#endif // WLED_PS_DONT_REPLACE_x_FX
22222229

22232230
// colored stripes pulsing at a defined Beats-Per-Minute (BPM)
22242231
uint16_t mode_bpm() {
@@ -3069,7 +3076,7 @@ uint16_t mode_bouncing_balls(void) {
30693076
}
30703077
static const char _data_FX_MODE_BOUNCINGBALLS[] PROGMEM = "Bouncing Balls@Gravity,# of balls,,,,,Overlay;!,!,!;!;1;m12=1"; //bar
30713078

3072-
#ifdef WLED_PS_DONT_REPLACE_FX
3079+
#ifdef WLED_PS_DONT_REPLACE_1D_FX
30733080
/*
30743081
* bouncing balls on a track track Effect modified from Aircoookie's bouncing balls
30753082
* Courtesy of pjhatch (https://github.com/pjhatch)
@@ -3169,7 +3176,7 @@ static uint16_t rolling_balls(void) {
31693176
return FRAMETIME;
31703177
}
31713178
static const char _data_FX_MODE_ROLLINGBALLS[] PROGMEM = "Rolling Balls@!,# of balls,,,,Collide,Overlay,Trails;!,!,!;!;1;m12=1"; //bar
3172-
#endif // WLED_PS_DONT_REPLACE_FX
3179+
#endif // WLED_PS_DONT_REPLACE_1D_FX
31733180

31743181
/*
31753182
* Sinelon stolen from FASTLED examples
@@ -3226,7 +3233,6 @@ uint16_t mode_sinelon_rainbow(void) {
32263233
}
32273234
static const char _data_FX_MODE_SINELON_RAINBOW[] PROGMEM = "Sinelon Rainbow@!,Trail;,,!;!";
32283235

3229-
32303236
// utility function that will add random glitter to SEGMENT
32313237
void glitter_base(uint8_t intensity, uint32_t col = ULTRAWHITE) {
32323238
if (intensity > hw_random8()) SEGMENT.setPixelColor(hw_random16(SEGLEN), col);
@@ -3431,7 +3437,7 @@ uint16_t mode_candle_multi()
34313437
}
34323438
static const char _data_FX_MODE_CANDLE_MULTI[] PROGMEM = "Candle Multi@!,!;!,!;!;;sx=96,ix=224,pal=0";
34333439

3434-
#ifdef WLED_PS_DONT_REPLACE_FX
3440+
#ifdef WLED_PS_DONT_REPLACE_1D_FX
34353441
/*
34363442
/ Fireworks in starburst effect
34373443
/ based on the video: https://www.reddit.com/r/arduino/comments/c3sd46/i_made_this_fireworks_effect_for_my_led_strips/
@@ -3563,9 +3569,9 @@ uint16_t mode_starburst(void) {
35633569
}
35643570
#undef STARBURST_MAX_FRAG
35653571
static const char _data_FX_MODE_STARBURST[] PROGMEM = "Fireworks Starburst@Chance,Fragments,,,,,Overlay;,!;!;;pal=11,m12=0";
3566-
#endif // WLED_PS_DONT_REPLACE_FX
3572+
#endif // WLED_PS_DONT_REPLACE_1DFX
35673573

3568-
#ifdef WLED_PS_DONT_REPLACE_FX
3574+
#if defined(WLED_PS_DONT_REPLACE_1D_FX) || defined(WLED_PS_DONT_REPLACE_2D_FX)
35693575
/*
35703576
* Exploding fireworks effect
35713577
* adapted from: http://www.anirama.com/1000leds/1d-fireworks/
@@ -3703,7 +3709,7 @@ uint16_t mode_exploding_fireworks(void)
37033709
}
37043710
#undef MAX_SPARKS
37053711
static const char _data_FX_MODE_EXPLODING_FIREWORKS[] PROGMEM = "Fireworks 1D@Gravity,Firing side;!,!;!;12;pal=11,ix=128";
3706-
#endif // WLED_PS_DONT_REPLACE_FX
3712+
#endif // WLED_PS_DONT_REPLACE_x_FX
37073713

37083714
/*
37093715
* Drip Effect
@@ -4351,7 +4357,7 @@ static const char _data_FX_MODE_CHUNCHUN[] PROGMEM = "Chunchun@!,Gap size;!,!;!"
43514357
#define SPOT_MAX_COUNT 49 //Number of simultaneous waves
43524358
#endif
43534359

4354-
#ifdef WLED_PS_DONT_REPLACE_FX
4360+
#ifdef WLED_PS_DONT_REPLACE_1D_FX
43554361
//13 bytes
43564362
typedef struct Spotlight {
43574363
float speed;
@@ -4485,7 +4491,7 @@ uint16_t mode_dancing_shadows(void)
44854491
return FRAMETIME;
44864492
}
44874493
static const char _data_FX_MODE_DANCING_SHADOWS[] PROGMEM = "Dancing Shadows@!,# of shadows;!;!";
4488-
#endif // WLED_PS_DONT_REPLACE_FX
4494+
#endif // WLED_PS_DONT_REPLACE_1D_FX
44894495

44904496
/*
44914497
Imitates a washing machine, rotating same waves forward, then pause, then backward.
@@ -6046,7 +6052,7 @@ uint16_t mode_2Dcrazybees(void) {
60466052
static const char _data_FX_MODE_2DCRAZYBEES[] PROGMEM = "Crazy Bees@!,Blur,,,,Smear;;!;2;pal=11,ix=0";
60476053
#undef MAX_BEES
60486054

6049-
#ifdef WLED_PS_DONT_REPLACE_FX
6055+
#ifdef WLED_PS_DONT_REPLACE_2D_FX
60506056
/////////////////////////
60516057
// 2D Ghost Rider //
60526058
/////////////////////////
@@ -6234,7 +6240,7 @@ uint16_t mode_2Dfloatingblobs(void) {
62346240
}
62356241
static const char _data_FX_MODE_2DBLOBS[] PROGMEM = "Blobs@!,# blobs,Blur,Trail;!;!;2;c1=8";
62366242
#undef MAX_BLOBS
6237-
#endif // WLED_PS_DONT_REPLACE_FX
6243+
#endif // WLED_PS_DONT_REPLACE_2D_FX
62386244

62396245
////////////////////////////
62406246
// 2D Scrolling text //
@@ -10886,16 +10892,18 @@ void WS2812FX::setupEffectData() {
1088610892
addEffect(FX_MODE_SPOTS, &mode_spots, _data_FX_MODE_SPOTS);
1088710893
addEffect(FX_MODE_SPOTS_FADE, &mode_spots_fade, _data_FX_MODE_SPOTS_FADE);
1088810894
addEffect(FX_MODE_COMET, &mode_comet, _data_FX_MODE_COMET);
10889-
#ifdef WLED_PS_DONT_REPLACE_FX
10890-
addEffect(FX_MODE_MULTI_COMET, &mode_multi_comet, _data_FX_MODE_MULTI_COMET);
10891-
addEffect(FX_MODE_ROLLINGBALLS, &rolling_balls, _data_FX_MODE_ROLLINGBALLS);
10895+
#if defined(WLED_PS_DONT_REPLACE_1D_FX) || defined(WLED_PS_DONT_REPLACE_2D_FX)
10896+
addEffect(FX_MODE_FIRE_2012, &mode_fire_2012, _data_FX_MODE_FIRE_2012);
10897+
addEffect(FX_MODE_EXPLODING_FIREWORKS, &mode_exploding_fireworks, _data_FX_MODE_EXPLODING_FIREWORKS);
10898+
#endif
1089210899
addEffect(FX_MODE_SPARKLE, &mode_sparkle, _data_FX_MODE_SPARKLE);
1089310900
addEffect(FX_MODE_GLITTER, &mode_glitter, _data_FX_MODE_GLITTER);
1089410901
addEffect(FX_MODE_SOLID_GLITTER, &mode_solid_glitter, _data_FX_MODE_SOLID_GLITTER);
10902+
addEffect(FX_MODE_MULTI_COMET, &mode_multi_comet, _data_FX_MODE_MULTI_COMET);
10903+
#ifdef WLED_PS_DONT_REPLACE_1D_FX
10904+
addEffect(FX_MODE_ROLLINGBALLS, &rolling_balls, _data_FX_MODE_ROLLINGBALLS);
1089510905
addEffect(FX_MODE_STARBURST, &mode_starburst, _data_FX_MODE_STARBURST);
1089610906
addEffect(FX_MODE_DANCING_SHADOWS, &mode_dancing_shadows, _data_FX_MODE_DANCING_SHADOWS);
10897-
addEffect(FX_MODE_FIRE_2012, &mode_fire_2012, _data_FX_MODE_FIRE_2012);
10898-
addEffect(FX_MODE_EXPLODING_FIREWORKS, &mode_exploding_fireworks, _data_FX_MODE_EXPLODING_FIREWORKS);
1089910907
#endif
1090010908
addEffect(FX_MODE_CANDLE, &mode_candle, _data_FX_MODE_CANDLE);
1090110909
addEffect(FX_MODE_BOUNCINGBALLS, &mode_bouncing_balls, _data_FX_MODE_BOUNCINGBALLS);
@@ -10959,7 +10967,7 @@ void WS2812FX::setupEffectData() {
1095910967
addEffect(FX_MODE_2DSPACESHIPS, &mode_2Dspaceships, _data_FX_MODE_2DSPACESHIPS);
1096010968
addEffect(FX_MODE_2DCRAZYBEES, &mode_2Dcrazybees, _data_FX_MODE_2DCRAZYBEES);
1096110969

10962-
#ifdef WLED_PS_DONT_REPLACE_FX
10970+
#ifdef WLED_PS_DONT_REPLACE_2D_FX
1096310971
addEffect(FX_MODE_2DGHOSTRIDER, &mode_2Dghostrider, _data_FX_MODE_2DGHOSTRIDER);
1096410972
addEffect(FX_MODE_2DBLOBS, &mode_2Dfloatingblobs, _data_FX_MODE_2DBLOBS);
1096510973
#endif

0 commit comments

Comments
 (0)