Bugfixes
some Bugfixes regarding RGBW
This commit is contained in:
@@ -959,7 +959,7 @@ void loop() {
|
|||||||
}
|
}
|
||||||
#ifdef ENABLE_LEGACY_ANIMATIONS
|
#ifdef ENABLE_LEGACY_ANIMATIONS
|
||||||
if (mode == WIPE) {
|
if (mode == WIPE) {
|
||||||
strip.setColor(main_color.red, main_color.green, main_color.blue);
|
strip.setColor(main_color.white, main_color.red, main_color.green, main_color.blue);
|
||||||
strip.setMode(FX_MODE_COLOR_WIPE);
|
strip.setMode(FX_MODE_COLOR_WIPE);
|
||||||
mode = HOLD;
|
mode = HOLD;
|
||||||
}
|
}
|
||||||
@@ -972,12 +972,12 @@ void loop() {
|
|||||||
mode = HOLD;
|
mode = HOLD;
|
||||||
}
|
}
|
||||||
if (mode == THEATERCHASE) {
|
if (mode == THEATERCHASE) {
|
||||||
strip.setColor(main_color.red, main_color.green, main_color.blue);
|
strip.setColor(main_color.white, main_color.red, main_color.green, main_color.blue);
|
||||||
strip.setMode(FX_MODE_THEATER_CHASE);
|
strip.setMode(FX_MODE_THEATER_CHASE);
|
||||||
mode = HOLD;
|
mode = HOLD;
|
||||||
}
|
}
|
||||||
if (mode == TWINKLERANDOM) {
|
if (mode == TWINKLERANDOM) {
|
||||||
strip.setColor(main_color.red, main_color.green, main_color.blue);
|
strip.setColor(main_color.white, main_color.red, main_color.green, main_color.blue);
|
||||||
strip.setMode(FX_MODE_TWINKLE_RANDOM);
|
strip.setMode(FX_MODE_TWINKLE_RANDOM);
|
||||||
mode = HOLD;
|
mode = HOLD;
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,328 +0,0 @@
|
|||||||
#ifndef NeoAnimationFX_h
|
|
||||||
#define NeoAnimationFX_h
|
|
||||||
|
|
||||||
#include <NeoPixelBrightnessBus.h>
|
|
||||||
|
|
||||||
#define DEFAULT_BRIGHTNESS 50
|
|
||||||
#define DEFAULT_MODE 0
|
|
||||||
#define DEFAULT_SPEED 1000
|
|
||||||
#define DEFAULT_COLOR 0x00FF0000
|
|
||||||
|
|
||||||
#define SPEED_MIN 10
|
|
||||||
#define SPEED_MAX 65535
|
|
||||||
|
|
||||||
#define BRIGHTNESS_MIN 0
|
|
||||||
#define BRIGHTNESS_MAX 255
|
|
||||||
|
|
||||||
/* each segment uses 34 bytes of SRAM memory, so if you're application fails because of
|
|
||||||
insufficient memory, decreasing MAX_NUM_SEGMENTS may help */
|
|
||||||
#define MAX_NUM_SEGMENTS 10
|
|
||||||
#define NUM_COLORS 4 /* number of colors per segment */
|
|
||||||
#define SEGMENT _segments[_segment_index]
|
|
||||||
#define SEGMENT_RUNTIME _segment_runtimes[_segment_index]
|
|
||||||
#define SEGMENT_LENGTH (SEGMENT.stop - SEGMENT.start + 1)
|
|
||||||
#define RESET_RUNTIME memset(_segment_runtimes, 0, sizeof(_segment_runtimes))
|
|
||||||
|
|
||||||
// some common colors
|
|
||||||
#define RED 0x00FF0000
|
|
||||||
#define GREEN 0x0000FF00
|
|
||||||
#define BLUE 0x000000FF
|
|
||||||
#define WHITE 0x00FFFFFF
|
|
||||||
#define BLACK 0x00000000
|
|
||||||
#define YELLOW 0x00FFFF00
|
|
||||||
#define CYAN 0x0000FFFF
|
|
||||||
#define MAGENTA 0x00FF00FF
|
|
||||||
#define PURPLE 0x00400080
|
|
||||||
#define ORANGE 0x00FF3000
|
|
||||||
#define ULTRAWHITE 0xFFFFFFFF
|
|
||||||
|
|
||||||
#define MODE_COUNT 58
|
|
||||||
|
|
||||||
#define FX_MODE_STATIC 0
|
|
||||||
#define FX_MODE_BLINK 1
|
|
||||||
#define FX_MODE_BREATH 2
|
|
||||||
#define FX_MODE_COLOR_WIPE 3
|
|
||||||
#define FX_MODE_COLOR_WIPE_INV 4
|
|
||||||
#define FX_MODE_COLOR_WIPE_REV 5
|
|
||||||
#define FX_MODE_COLOR_WIPE_REV_INV 6
|
|
||||||
#define FX_MODE_COLOR_WIPE_RANDOM 7
|
|
||||||
#define FX_MODE_RANDOM_COLOR 8
|
|
||||||
#define FX_MODE_SINGLE_DYNAMIC 9
|
|
||||||
#define FX_MODE_MULTI_DYNAMIC 10
|
|
||||||
#define FX_MODE_RAINBOW 11
|
|
||||||
#define FX_MODE_RAINBOW_CYCLE 12
|
|
||||||
#define FX_MODE_SCAN 13
|
|
||||||
#define FX_MODE_DUAL_SCAN 14
|
|
||||||
#define FX_MODE_FADE 15
|
|
||||||
#define FX_MODE_THEATER_CHASE 16
|
|
||||||
#define FX_MODE_THEATER_CHASE_RAINBOW 17
|
|
||||||
#define FX_MODE_RUNNING_LIGHTS 18
|
|
||||||
#define FX_MODE_TWINKLE 19
|
|
||||||
#define FX_MODE_TWINKLE_RANDOM 20
|
|
||||||
#define FX_MODE_TWINKLE_FADE 21
|
|
||||||
#define FX_MODE_TWINKLE_FADE_RANDOM 22
|
|
||||||
#define FX_MODE_SPARKLE 23
|
|
||||||
#define FX_MODE_FLASH_SPARKLE 24
|
|
||||||
#define FX_MODE_HYPER_SPARKLE 25
|
|
||||||
#define FX_MODE_STROBE 26
|
|
||||||
#define FX_MODE_STROBE_RAINBOW 27
|
|
||||||
#define FX_MODE_MULTI_STROBE 28
|
|
||||||
#define FX_MODE_BLINK_RAINBOW 29
|
|
||||||
#define FX_MODE_CHASE_WHITE 30
|
|
||||||
#define FX_MODE_CHASE_COLOR 31
|
|
||||||
#define FX_MODE_CHASE_RANDOM 32
|
|
||||||
#define FX_MODE_CHASE_RAINBOW 33
|
|
||||||
#define FX_MODE_CHASE_FLASH 34
|
|
||||||
#define FX_MODE_CHASE_FLASH_RANDOM 35
|
|
||||||
#define FX_MODE_CHASE_RAINBOW_WHITE 36
|
|
||||||
#define FX_MODE_CHASE_BLACKOUT 37
|
|
||||||
#define FX_MODE_CHASE_BLACKOUT_RAINBOW 38
|
|
||||||
#define FX_MODE_COLOR_SWEEP_RANDOM 39
|
|
||||||
#define FX_MODE_RUNNING_COLOR 40
|
|
||||||
#define FX_MODE_RUNNING_RED_BLUE 41
|
|
||||||
#define FX_MODE_RUNNING_RANDOM 42
|
|
||||||
#define FX_MODE_LARSON_SCANNER 43
|
|
||||||
#define FX_MODE_COMET 44
|
|
||||||
#define FX_MODE_FIREWORKS 45
|
|
||||||
#define FX_MODE_FIREWORKS_RANDOM 46
|
|
||||||
#define FX_MODE_MERRY_CHRISTMAS 47
|
|
||||||
#define FX_MODE_FIRE_FLICKER 48
|
|
||||||
#define FX_MODE_FIRE_FLICKER_SOFT 49
|
|
||||||
#define FX_MODE_FIRE_FLICKER_INTENSE 50
|
|
||||||
#define FX_MODE_CIRCUS_COMBUSTUS 51
|
|
||||||
#define FX_MODE_HALLOWEEN 52
|
|
||||||
#define FX_MODE_BICOLOR_CHASE 53
|
|
||||||
#define FX_MODE_TRICOLOR_CHASE 54
|
|
||||||
#define FX_MODE_ICU 55
|
|
||||||
#define FX_MODE_CUSTOM 56
|
|
||||||
#define FX_MODE_METEOR_RAIN 57
|
|
||||||
|
|
||||||
#define MAX_PIXEL_CT 3000
|
|
||||||
|
|
||||||
typedef NeoPixelBrightnessBus<NeoGrbFeature, Neo800KbpsMethod> NeoPBBGRB800; // Use this for WS2812
|
|
||||||
typedef NeoPixelBrightnessBus<NeoGrbFeature, Neo400KbpsMethod> NeoPBBGRB400;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoGrbFeature, NeoEsp8266Uart800KbpsMethod> NeoPBBGRBU800;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoGrbFeature, NeoEsp8266Uart400KbpsMethod> NeoPBBGRBU400;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoGrbFeature, NeoEsp8266Dma800KbpsMethod> NeoPBBGRBD800;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoGrbFeature, NeoEsp8266Dma400KbpsMethod> NeoPBBGRBD400;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoGrbFeature, NeoEsp8266BitBang800KbpsMethod> NeoPBBGRBBB800;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoGrbFeature, NeoEsp8266BitBang400KbpsMethod> NeoPBBGRBBB400;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoGrbFeature, NeoWs2813Method> NeoPBBGRBws2813;
|
|
||||||
|
|
||||||
typedef NeoPixelBrightnessBus<NeoRgbFeature, Neo800KbpsMethod> NeoPBBRGB800;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoRgbFeature, Neo400KbpsMethod> NeoPBBRGB400;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoRgbFeature, NeoEsp8266Uart800KbpsMethod> NeoPBBRGBU800;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoRgbFeature, NeoEsp8266Uart400KbpsMethod> NeoPBBRGBU400;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoRgbFeature, NeoEsp8266Dma800KbpsMethod> NeoPBBRGBD800;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoRgbFeature, NeoEsp8266Dma400KbpsMethod> NeoPBBRGBD400;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoRgbFeature, NeoEsp8266BitBang800KbpsMethod> NeoPBBRGBBB800;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoRgbFeature, NeoEsp8266BitBang400KbpsMethod> NeoPBBRGBBB400;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoRgbFeature, NeoWs2813Method> NeoPBBRGBws2813;
|
|
||||||
|
|
||||||
typedef NeoPixelBrightnessBus<NeoBrgFeature, Neo800KbpsMethod> NeoPBBBRG800;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoBrgFeature, Neo400KbpsMethod> NeoPBBBRG400;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoBrgFeature, NeoEsp8266Uart800KbpsMethod> NeoPBBBRGU800;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoBrgFeature, NeoEsp8266Uart400KbpsMethod> NeoPBBBRGU400;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoBrgFeature, NeoEsp8266Dma800KbpsMethod> NeoPBBBRGD800;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoBrgFeature, NeoEsp8266Dma400KbpsMethod> NeoPBBBRGD400;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoBrgFeature, NeoEsp8266BitBang800KbpsMethod> NeoPBBBRGBB800;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoBrgFeature, NeoEsp8266BitBang400KbpsMethod> NeoPBBBRGBB400;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoBrgFeature, NeoWs2813Method> NeoPBBBRGws2813;
|
|
||||||
|
|
||||||
typedef NeoPixelBrightnessBus<NeoRbgFeature, Neo800KbpsMethod> NeoPBBRBG800;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoRbgFeature, Neo400KbpsMethod> NeoPBBRBG400;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoRbgFeature, NeoEsp8266Uart800KbpsMethod> NeoPBBRBGU800;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoRbgFeature, NeoEsp8266Uart400KbpsMethod> NeoPBBRBGU400;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoRbgFeature, NeoEsp8266Dma800KbpsMethod> NeoPBBRBGD800;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoRbgFeature, NeoEsp8266Dma400KbpsMethod> NeoPBBRBGD400;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoRbgFeature, NeoEsp8266BitBang800KbpsMethod> NeoPBBRBGBB800;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoRbgFeature, NeoEsp8266BitBang400KbpsMethod> NeoPBBRBGBB400;
|
|
||||||
typedef NeoPixelBrightnessBus<NeoRbgFeature, NeoWs2813Method> NeoPBBRBGws2813;
|
|
||||||
|
|
||||||
//typedef NeoPixelBrightnessBus <NeoRgbwFeature, Neo800KbpsMethod> NeoPBBRGBW800; // Not supported yet
|
|
||||||
|
|
||||||
template<typename T_PIXEL_METHOD> class NeoAnimationFX {
|
|
||||||
typedef uint16_t (NeoAnimationFX::*mode_ptr)(void);
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
// segment parameters
|
|
||||||
|
|
||||||
/* set default values c way
|
|
||||||
struct segment_struct {
|
|
||||||
uint8_t mode;
|
|
||||||
RgbColor color;
|
|
||||||
uint16_t speed;
|
|
||||||
uint16_t start;
|
|
||||||
uint16_t stop;
|
|
||||||
bool reverse;
|
|
||||||
} segment_default = { FX_MODE_STATIC, (RgbColor) HtmlColor(DEFAULT_COLOR), DEFAULT_SPEED, 0, 7, false};
|
|
||||||
|
|
||||||
typedef struct segment_struct segment; */
|
|
||||||
|
|
||||||
typedef struct Segment {
|
|
||||||
uint8_t mode;
|
|
||||||
RgbColor colors[NUM_COLORS];
|
|
||||||
uint16_t speed;
|
|
||||||
uint16_t start;
|
|
||||||
uint16_t stop;
|
|
||||||
bool reverse;
|
|
||||||
// set default values c++ way
|
|
||||||
Segment():
|
|
||||||
mode(FX_MODE_STATIC),
|
|
||||||
colors({(RgbColor) HtmlColor(DEFAULT_COLOR), (RgbColor) HtmlColor(BLACK), (RgbColor) HtmlColor(GREEN)}),
|
|
||||||
speed(DEFAULT_SPEED),
|
|
||||||
start(0),
|
|
||||||
stop(7),
|
|
||||||
reverse(false) {}
|
|
||||||
} segment;
|
|
||||||
|
|
||||||
// segment runtime parameters
|
|
||||||
typedef struct Segment_runtime {
|
|
||||||
uint32_t counter_mode_step;
|
|
||||||
uint32_t counter_mode_call;
|
|
||||||
unsigned long next_time;
|
|
||||||
uint16_t aux_param;
|
|
||||||
} segment_runtime;
|
|
||||||
|
|
||||||
NeoAnimationFX(T_PIXEL_METHOD& pixelStrip) :
|
|
||||||
_strip(pixelStrip) {
|
|
||||||
_mode[FX_MODE_STATIC] = &NeoAnimationFX::mode_static;
|
|
||||||
_mode[FX_MODE_BLINK] = &NeoAnimationFX::mode_blink;
|
|
||||||
_mode[FX_MODE_COLOR_WIPE] = &NeoAnimationFX::mode_color_wipe;
|
|
||||||
_mode[FX_MODE_COLOR_WIPE_INV] = &NeoAnimationFX::mode_color_wipe_inv;
|
|
||||||
_mode[FX_MODE_COLOR_WIPE_REV] = &NeoAnimationFX::mode_color_wipe_rev;
|
|
||||||
_mode[FX_MODE_COLOR_WIPE_REV_INV] = &NeoAnimationFX::mode_color_wipe_rev_inv;
|
|
||||||
_mode[FX_MODE_COLOR_WIPE_RANDOM] = &NeoAnimationFX::mode_color_wipe_random;
|
|
||||||
_mode[FX_MODE_RANDOM_COLOR] = &NeoAnimationFX::mode_random_color;
|
|
||||||
_mode[FX_MODE_SINGLE_DYNAMIC] = &NeoAnimationFX::mode_single_dynamic;
|
|
||||||
_mode[FX_MODE_MULTI_DYNAMIC] = &NeoAnimationFX::mode_multi_dynamic;
|
|
||||||
_mode[FX_MODE_RAINBOW] = &NeoAnimationFX::mode_rainbow;
|
|
||||||
_mode[FX_MODE_RAINBOW_CYCLE] = &NeoAnimationFX::mode_rainbow_cycle;
|
|
||||||
_mode[FX_MODE_SCAN] = &NeoAnimationFX::mode_scan;
|
|
||||||
_mode[FX_MODE_DUAL_SCAN] = &NeoAnimationFX::mode_dual_scan;
|
|
||||||
_mode[FX_MODE_FADE] = &NeoAnimationFX::mode_fade;
|
|
||||||
_mode[FX_MODE_THEATER_CHASE] = &NeoAnimationFX::mode_theater_chase;
|
|
||||||
_mode[FX_MODE_THEATER_CHASE_RAINBOW] = &NeoAnimationFX::mode_theater_chase_rainbow;
|
|
||||||
_mode[FX_MODE_TWINKLE] = &NeoAnimationFX::mode_twinkle;
|
|
||||||
_mode[FX_MODE_TWINKLE_RANDOM] = &NeoAnimationFX::mode_twinkle_random;
|
|
||||||
_mode[FX_MODE_TWINKLE_FADE] = &NeoAnimationFX::mode_twinkle_fade;
|
|
||||||
_mode[FX_MODE_TWINKLE_FADE_RANDOM] = &NeoAnimationFX::mode_twinkle_fade_random;
|
|
||||||
_mode[FX_MODE_SPARKLE] = &NeoAnimationFX::mode_sparkle;
|
|
||||||
_mode[FX_MODE_FLASH_SPARKLE] = &NeoAnimationFX::mode_flash_sparkle;
|
|
||||||
_mode[FX_MODE_HYPER_SPARKLE] = &NeoAnimationFX::mode_hyper_sparkle;
|
|
||||||
_mode[FX_MODE_STROBE] = &NeoAnimationFX::mode_strobe;
|
|
||||||
_mode[FX_MODE_STROBE_RAINBOW] = &NeoAnimationFX::mode_strobe_rainbow;
|
|
||||||
_mode[FX_MODE_MULTI_STROBE] = &NeoAnimationFX::mode_multi_strobe;
|
|
||||||
_mode[FX_MODE_BLINK_RAINBOW] = &NeoAnimationFX::mode_blink_rainbow;
|
|
||||||
_mode[FX_MODE_CHASE_WHITE] = &NeoAnimationFX::mode_chase_white;
|
|
||||||
_mode[FX_MODE_CHASE_COLOR] = &NeoAnimationFX::mode_chase_color;
|
|
||||||
_mode[FX_MODE_CHASE_RANDOM] = &NeoAnimationFX::mode_chase_random;
|
|
||||||
_mode[FX_MODE_CHASE_RAINBOW] = &NeoAnimationFX::mode_chase_rainbow;
|
|
||||||
_mode[FX_MODE_CHASE_FLASH] = &NeoAnimationFX::mode_chase_flash;
|
|
||||||
_mode[FX_MODE_CHASE_FLASH_RANDOM] = &NeoAnimationFX::mode_chase_flash_random;
|
|
||||||
_mode[FX_MODE_CHASE_RAINBOW_WHITE] = &NeoAnimationFX::mode_chase_rainbow_white;
|
|
||||||
_mode[FX_MODE_CHASE_BLACKOUT] = &NeoAnimationFX::mode_chase_blackout;
|
|
||||||
_mode[FX_MODE_CHASE_BLACKOUT_RAINBOW] = &NeoAnimationFX::mode_chase_blackout_rainbow;
|
|
||||||
_mode[FX_MODE_COLOR_SWEEP_RANDOM] = &NeoAnimationFX::mode_color_sweep_random;
|
|
||||||
_mode[FX_MODE_RUNNING_COLOR] = &NeoAnimationFX::mode_running_color;
|
|
||||||
_mode[FX_MODE_RUNNING_RED_BLUE] = &NeoAnimationFX::mode_running_red_blue;
|
|
||||||
_mode[FX_MODE_RUNNING_RANDOM] = &NeoAnimationFX::mode_running_random;
|
|
||||||
_mode[FX_MODE_LARSON_SCANNER] = &NeoAnimationFX::mode_larson_scanner;
|
|
||||||
_mode[FX_MODE_COMET] = &NeoAnimationFX::mode_comet;
|
|
||||||
_mode[FX_MODE_FIREWORKS] = &NeoAnimationFX::mode_fireworks;
|
|
||||||
_mode[FX_MODE_FIREWORKS_RANDOM] = &NeoAnimationFX::mode_fireworks_random;
|
|
||||||
_mode[FX_MODE_MERRY_CHRISTMAS] = &NeoAnimationFX::mode_merry_christmas;
|
|
||||||
_mode[FX_MODE_HALLOWEEN] = &NeoAnimationFX::mode_halloween;
|
|
||||||
_mode[FX_MODE_FIRE_FLICKER] = &NeoAnimationFX::mode_fire_flicker;
|
|
||||||
_mode[FX_MODE_FIRE_FLICKER_SOFT] = &NeoAnimationFX::mode_fire_flicker_soft;
|
|
||||||
_mode[FX_MODE_FIRE_FLICKER_INTENSE] = &NeoAnimationFX::mode_fire_flicker_intense;
|
|
||||||
_mode[FX_MODE_CIRCUS_COMBUSTUS] = &NeoAnimationFX::mode_circus_combustus;
|
|
||||||
_mode[FX_MODE_BICOLOR_CHASE] = &NeoAnimationFX::mode_bicolor_chase;
|
|
||||||
_mode[FX_MODE_TRICOLOR_CHASE] = &NeoAnimationFX::mode_tricolor_chase;
|
|
||||||
// if flash memory is constrained (I'm looking at you Arduino Nano), replace modes
|
|
||||||
// that use a lot of flash with mode_static (reduces flash footprint by about 3600 bytes)
|
|
||||||
#ifdef REDUCED_MODES
|
|
||||||
_mode[FX_MODE_BREATH] = &NeoAnimationFX::mode_static;
|
|
||||||
_mode[FX_MODE_RUNNING_LIGHTS] = &NeoAnimationFX::mode_static;
|
|
||||||
_mode[FX_MODE_ICU] = &NeoAnimationFX::mode_static;
|
|
||||||
#else
|
|
||||||
_mode[FX_MODE_BREATH] = &NeoAnimationFX::mode_breath;
|
|
||||||
_mode[FX_MODE_RUNNING_LIGHTS] = &NeoAnimationFX::mode_running_lights;
|
|
||||||
_mode[FX_MODE_ICU] = &NeoAnimationFX::mode_icu;
|
|
||||||
#endif
|
|
||||||
_mode[FX_MODE_CUSTOM] = &NeoAnimationFX::mode_custom;
|
|
||||||
_mode[FX_MODE_METEOR_RAIN] = &NeoAnimationFX::mode_meteor_rain;
|
|
||||||
|
|
||||||
_name[FX_MODE_STATIC] = F("Static");
|
|
||||||
_name[FX_MODE_BLINK] = F("Blink");
|
|
||||||
_name[FX_MODE_BREATH] = F("Breath");
|
|
||||||
_name[FX_MODE_COLOR_WIPE] = F("Color Wipe");
|
|
||||||
_name[FX_MODE_COLOR_WIPE_INV ] = F("Color Wipe Inverse");
|
|
||||||
_name[FX_MODE_COLOR_WIPE_REV] = F("Color Wipe Reverse");
|
|
||||||
_name[FX_MODE_COLOR_WIPE_REV_INV] = F("Color Wipe Reverse Inverse");
|
|
||||||
_name[FX_MODE_COLOR_WIPE_RANDOM] = F("Color Wipe Random");
|
|
||||||
_name[FX_MODE_RANDOM_COLOR] = F("Random Color");
|
|
||||||
_name[FX_MODE_SINGLE_DYNAMIC] = F("Single Dynamic");
|
|
||||||
_name[FX_MODE_MULTI_DYNAMIC] = F("Multi Dynamic");
|
|
||||||
_name[FX_MODE_RAINBOW] = F("Rainbow");
|
|
||||||
_name[FX_MODE_RAINBOW_CYCLE] = F("Rainbow Cycle");
|
|
||||||
_name[FX_MODE_SCAN] = F("Scan");
|
|
||||||
_name[FX_MODE_DUAL_SCAN] = F("Dual Scan");
|
|
||||||
_name[FX_MODE_FADE] = F("Fade");
|
|
||||||
_name[FX_MODE_THEATER_CHASE] = F("Theater Chase");
|
|
||||||
_name[FX_MODE_THEATER_CHASE_RAINBOW] = F("Theater Chase Rainbow");
|
|
||||||
_name[FX_MODE_RUNNING_LIGHTS] = F("Running Lights");
|
|
||||||
_name[FX_MODE_TWINKLE] = F("Twinkle");
|
|
||||||
_name[FX_MODE_TWINKLE_RANDOM] = F("Twinkle Random");
|
|
||||||
_name[FX_MODE_TWINKLE_FADE] = F("Twinkle Fade");
|
|
||||||
_name[FX_MODE_TWINKLE_FADE_RANDOM] = F("Twinkle Fade Random");
|
|
||||||
_name[FX_MODE_SPARKLE] = F("Sparkle");
|
|
||||||
_name[FX_MODE_FLASH_SPARKLE] = F("Flash Sparkle");
|
|
||||||
_name[FX_MODE_HYPER_SPARKLE] = F("Hyper Sparkle");
|
|
||||||
_name[FX_MODE_STROBE] = F("Strobe");
|
|
||||||
_name[FX_MODE_STROBE_RAINBOW] = F("Strobe Rainbow");
|
|
||||||
_name[FX_MODE_MULTI_STROBE] = F("Multi Strobe");
|
|
||||||
_name[FX_MODE_BLINK_RAINBOW] = F("Blink Rainbow");
|
|
||||||
_name[FX_MODE_CHASE_WHITE] = F("Chase White");
|
|
||||||
_name[FX_MODE_CHASE_COLOR] = F("Chase Color");
|
|
||||||
_name[FX_MODE_CHASE_RANDOM] = F("Chase Random");
|
|
||||||
_name[FX_MODE_CHASE_RAINBOW] = F("Chase Rainbow");
|
|
||||||
_name[FX_MODE_CHASE_FLASH] = F("Chase Flash");
|
|
||||||
_name[FX_MODE_CHASE_FLASH_RANDOM] = F("Chase Flash Random");
|
|
||||||
_name[FX_MODE_CHASE_RAINBOW_WHITE] = F("Chase Rainbow White");
|
|
||||||
_name[FX_MODE_CHASE_BLACKOUT] = F("Chase Blackout");
|
|
||||||
_name[FX_MODE_CHASE_BLACKOUT_RAINBOW] = F("Chase Blackout Rainbow");
|
|
||||||
_name[FX_MODE_COLOR_SWEEP_RANDOM] = F("Color Sweep Random");
|
|
||||||
_name[FX_MODE_RUNNING_COLOR] = F("Running Color");
|
|
||||||
_name[FX_MODE_RUNNING_RED_BLUE] = F("Running Red Blue");
|
|
||||||
_name[FX_MODE_RUNNING_RANDOM] = F("Running Random");
|
|
||||||
_name[FX_MODE_LARSON_SCANNER] = F("Larson Scanner");
|
|
||||||
_name[FX_MODE_COMET] = F("Comet");
|
|
||||||
_name[FX_MODE_FIREWORKS] = F("Fireworks");
|
|
||||||
_name[FX_MODE_FIREWORKS_RANDOM] = F("Fireworks Random");
|
|
||||||
_name[FX_MODE_MERRY_CHRISTMAS] = F("Merry Christmas");
|
|
||||||
_name[FX_MODE_HALLOWEEN] = F("Halloween");
|
|
||||||
_name[FX_MODE_FIRE_FLICKER] = F("Fire Flicker");
|
|
||||||
_name[FX_MODE_FIRE_FLICKER_SOFT] = F("Fire Flicker (soft)");
|
|
||||||
_name[FX_MODE_FIRE_FLICKER_INTENSE] = F("Fire Flicker (intense)");
|
|
||||||
_name[FX_MODE_CIRCUS_COMBUSTUS] = F("Circus Combustus");
|
|
||||||
_name[FX_MODE_BICOLOR_CHASE] = F("Bicolor Chase");
|
|
||||||
_name[FX_MODE_TRICOLOR_CHASE] = F("Tricolor Chase");
|
|
||||||
_name[FX_MODE_ICU] = F("ICU");
|
|
||||||
_name[FX_MODE_CUSTOM] = F("Custom");
|
|
||||||
_name[FX_MODE_METEOR_RAIN] = F("Meteor Rain");
|
|
||||||
|
|
||||||
_brightness = DEFAULT_BRIGHTNESS;
|
|
||||||
_running = false;
|
|
||||||
_num_segments = 1;
|
|
||||||
_segments[0].mode = DEFAULT_MODE;
|
|
||||||
_segments[0].colors[0] = (RgbColor) HtmlColor(DEFAULT_COLOR);
|
|
||||||
_segments[0].start = 0;
|
|
||||||
(_strip.PixelCount() >= MAX_PIXEL_CT) ? _segments[0].stop = MAX_PIXEL_CT : _segments[0].stop = _strip.PixelCount() ;
|
|
||||||
_segments[0].speed = DEFAULT_SPEED;
|
|
||||||
RESET_RUNTIME;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -19,7 +19,7 @@ const char HOSTNAME[] = "McLightingRGBW01"; // Friedly hostname
|
|||||||
#define ENABLE_BUTTON // If defined, enable button handling code, see: https://github.com/toblum/McLighting/wiki/Button-control
|
#define ENABLE_BUTTON // If defined, enable button handling code, see: https://github.com/toblum/McLighting/wiki/Button-control
|
||||||
//#define ENABLE_BUTTON_GY33 //
|
//#define ENABLE_BUTTON_GY33 //
|
||||||
//#define MQTT_HOME_ASSISTANT_SUPPORT // If defined, use AMQTT and select Tools -> IwIP Variant -> Higher Bandwidth
|
//#define MQTT_HOME_ASSISTANT_SUPPORT // If defined, use AMQTT and select Tools -> IwIP Variant -> Higher Bandwidth
|
||||||
#define ENABLE_LEGACY_ANIMATIONS
|
//#define ENABLE_LEGACY_ANIMATIONS
|
||||||
|
|
||||||
#if defined(USE_NEOANIMATIONFX) and defined(USE_WS2812FX)
|
#if defined(USE_NEOANIMATIONFX) and defined(USE_WS2812FX)
|
||||||
#error "Cant have both NeoAnimationFX and WS2812FX enabled. Choose either one."
|
#error "Cant have both NeoAnimationFX and WS2812FX enabled. Choose either one."
|
||||||
@@ -89,11 +89,11 @@ uint32_t autoParams[][4] = { // color, speed, mode, duration (seconds)
|
|||||||
|
|
||||||
// List of all color modes
|
// List of all color modes
|
||||||
#ifdef ENABLE_LEGACY_ANIMATIONS
|
#ifdef ENABLE_LEGACY_ANIMATIONS
|
||||||
enum MODE { SET_MODE, HOLD, OFF, SETCOLOR, SETSPEED, BRIGHTNESS, WIPE, RAINBOW, RAINBOWCYCLE, THEATERCHASE, TWINKLERANDOM, THEATERCHASERAINBOW, TV, CUSTOM };
|
enum MODE { SET_MODE, HOLD, AUTO, OFF, TV, SETCOLOR, SETSPEED, BRIGHTNESS, WIPE, RAINBOW, RAINBOWCYCLE, THEATERCHASE, TWINKLERANDOM, THEATERCHASERAINBOW, CUSTOM};
|
||||||
MODE mode = RAINBOW; // Standard mode that is active when software starts
|
MODE mode = RAINBOW; // Standard mode that is active when software starts
|
||||||
bool exit_func = false; // Global helper variable to get out of the color modes when mode changes
|
bool exit_func = false; // Global helper variable to get out of the color modes when mode changes
|
||||||
#else
|
#else
|
||||||
enum MODE { SET_MODE, HOLD, OFF, SETCOLOR, SETSPEED, BRIGHTNESS, CUSTOM };
|
enum MODE { SET_MODE, HOLD, AUTO, OFF, TV, SETCOLOR, SETSPEED, BRIGHTNESS, CUSTOM};
|
||||||
MODE mode = SET_MODE; // Standard mode that is active when software starts
|
MODE mode = SET_MODE; // Standard mode that is active when software starts
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ void handleSetAllMode(uint8_t * mypayload) {
|
|||||||
main_color.blue = ((rgb ) & 0xFF);
|
main_color.blue = ((rgb ) & 0xFF);
|
||||||
|
|
||||||
// for (int i = 0; i < strip.numPixels(); i++) {
|
// for (int i = 0; i < strip.numPixels(); i++) {
|
||||||
// strip.setPixelColor(i, main_color.red, main_color.green, main_color.blue);
|
// strip.setPixelColor(i, main_color.red, main_color.green, main_color.blue, main_color.white);
|
||||||
// }
|
// }
|
||||||
// strip.show();
|
// strip.show();
|
||||||
DBG_OUTPUT_PORT.printf("WS: Set all leds to main color: W: [%u] R: [%u] G: [%u] B: [%u]\n", main_color.white, main_color.red, main_color.green, main_color.blue);
|
DBG_OUTPUT_PORT.printf("WS: Set all leds to main color: W: [%u] R: [%u] G: [%u] B: [%u]\n", main_color.white, main_color.red, main_color.green, main_color.blue);
|
||||||
@@ -297,8 +297,8 @@ char* listStatusJSON() {
|
|||||||
uint8_t tmp_mode = (mode == SET_MODE) ? (uint8_t) ws2812fx_mode : strip.getMode();
|
uint8_t tmp_mode = (mode == SET_MODE) ? (uint8_t) ws2812fx_mode : strip.getMode();
|
||||||
|
|
||||||
strncpy_P(modeName, (PGM_P)strip.getModeName(tmp_mode), sizeof(modeName)); // copy from progmem
|
strncpy_P(modeName, (PGM_P)strip.getModeName(tmp_mode), sizeof(modeName)); // copy from progmem
|
||||||
snprintf(json, sizeof(json), "{\"mode\":%d, \"ws2812fx_mode\":%d, \"ws2812fx_mode_name\":\"%s\", \"speed\":%d, \"brightness\":%d, \"color\":[%d, %d, %d]}",
|
snprintf(json, sizeof(json), "{\"mode\":%d, \"ws2812fx_mode\":%d, \"ws2812fx_mode_name\":\"%s\", \"speed\":%d, \"brightness\":%d, \"color\":[%d, %d, %d, %d]}",
|
||||||
mode, tmp_mode, modeName, ws2812fx_speed, brightness, main_color.red, main_color.green, main_color.blue);
|
mode, tmp_mode, modeName, ws2812fx_speed, brightness, main_color.white, main_color.red, main_color.green, main_color.blue);
|
||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -196,13 +196,13 @@ $(function(){
|
|||||||
$.getJSON("http://" + host + "/status", function(data) {
|
$.getJSON("http://" + host + "/status", function(data) {
|
||||||
console.log("status", data);
|
console.log("status", data);
|
||||||
mode = data.mode;
|
mode = data.mode;
|
||||||
ws2812fx_mode = data.ws2812fx_mode;
|
ws2812fx_mode = data.ws2812fx_mode_name;
|
||||||
|
$("#rng_delay").val(data.speed);
|
||||||
$("#rng_brightness").val(data.brightness);
|
$("#rng_brightness").val(data.brightness);
|
||||||
$("#rng_white").val(data.color[0]);
|
$("#rng_white").val(data.color[0]);
|
||||||
$("#rng_red").val(data.color[1]);
|
$("#rng_red").val(data.color[1]);
|
||||||
$("#rng_green").val(data.color[2]);
|
$("#rng_green").val(data.color[2]);
|
||||||
$("#rng_blue").val(data.color[3]);
|
$("#rng_blue").val(data.color[3]);
|
||||||
$("#rng_delay").val(data.speed);
|
|
||||||
var statusColor = "#" + componentToHex(data.color[1]) + componentToHex(data.color[2]) + componentToHex(data.color[3]);
|
var statusColor = "#" + componentToHex(data.color[1]) + componentToHex(data.color[2]) + componentToHex(data.color[3]);
|
||||||
$('#status').css("backgroundColor", statusColor);
|
$('#status').css("backgroundColor", statusColor);
|
||||||
$('#status_color').text(statusColor + "- R=" + data.color[1] + ", G=" + data.color[2] + ", B=" + data.color[3]);
|
$('#status_color').text(statusColor + "- R=" + data.color[1] + ", G=" + data.color[2] + ", B=" + data.color[3]);
|
||||||
@@ -210,12 +210,12 @@ $(function(){
|
|||||||
|
|
||||||
// Load modes async
|
// Load modes async
|
||||||
// List of all color modes
|
// List of all color modes
|
||||||
// enum MODE { SET_MODE, HOLD, OFF, ALL, WIPE, RAINBOW, RAINBOWCYCLE, THEATERCHASE, TWINKLERANDOM, THEATERCHASERAINBOW, TV, CUSTOM, AUTO };
|
// enum MODE { SET_MODE, HOLD, AUTO, OFF, TV, SETCOLOR, SETSPEED, BRIGHTNESS, WIPE, RAINBOW, RAINBOWCYCLE, THEATERCHASE, TWINKLERANDOM, THEATERCHASERAINBOW, CUSTOM};
|
||||||
$.getJSON("http://" + host + "/get_modes", function(data) {
|
$.getJSON("http://" + host + "/get_modes", function(data) {
|
||||||
console.log("modes", data);
|
console.log("modes", data);
|
||||||
var modes_html = "";
|
var modes_html = "";
|
||||||
modes_html += '<div class="col s12 m6 l6 btn_grid">';
|
modes_html += '<div class="col s12 m6 l6 btn_grid">';
|
||||||
if (mode == 2) {
|
if (mode == 3) {
|
||||||
modes_html += '<a class="btn waves-effect waves-light btn_mode_static red" name="action" data-mode="off">OFF';
|
modes_html += '<a class="btn waves-effect waves-light btn_mode_static red" name="action" data-mode="off">OFF';
|
||||||
} else {
|
} else {
|
||||||
modes_html += '<a class="btn waves-effect waves-light btn_mode_static blue" name="action" data-mode="off">OFF';
|
modes_html += '<a class="btn waves-effect waves-light btn_mode_static blue" name="action" data-mode="off">OFF';
|
||||||
@@ -224,7 +224,7 @@ $(function(){
|
|||||||
modes_html += '</a>';
|
modes_html += '</a>';
|
||||||
modes_html += '</div>'
|
modes_html += '</div>'
|
||||||
modes_html += '<div class="col s12 m6 l6 btn_grid">';
|
modes_html += '<div class="col s12 m6 l6 btn_grid">';
|
||||||
if (mode == 10) {
|
if (mode == 4) {
|
||||||
modes_html += '<a class="btn waves-effect waves-light btn_mode_static red" name="action" data-mode="tv">TV';
|
modes_html += '<a class="btn waves-effect waves-light btn_mode_static red" name="action" data-mode="tv">TV';
|
||||||
} else {
|
} else {
|
||||||
modes_html += '<a class="btn waves-effect waves-light btn_mode_static blue" name="action" data-mode="tv">TV';
|
modes_html += '<a class="btn waves-effect waves-light btn_mode_static blue" name="action" data-mode="tv">TV';
|
||||||
|
|||||||
@@ -42,13 +42,13 @@ $(function(){
|
|||||||
$.getJSON("http://" + host + "/status", function(data) {
|
$.getJSON("http://" + host + "/status", function(data) {
|
||||||
console.log("status", data);
|
console.log("status", data);
|
||||||
mode = data.mode;
|
mode = data.mode;
|
||||||
ws2812fx_mode = data.ws2812fx_mode;
|
ws2812fx_mode = data.ws2812fx_mode_name;
|
||||||
|
$("#rng_delay").val(data.speed);
|
||||||
$("#rng_brightness").val(data.brightness);
|
$("#rng_brightness").val(data.brightness);
|
||||||
$("#rng_white").val(data.color[0]);
|
$("#rng_white").val(data.color[0]);
|
||||||
$("#rng_red").val(data.color[1]);
|
$("#rng_red").val(data.color[1]);
|
||||||
$("#rng_green").val(data.color[2]);
|
$("#rng_green").val(data.color[2]);
|
||||||
$("#rng_blue").val(data.color[3]);
|
$("#rng_blue").val(data.color[3]);
|
||||||
$("#rng_delay").val(data.speed);
|
|
||||||
var statusColor = "#" + componentToHex(data.color[1]) + componentToHex(data.color[2]) + componentToHex(data.color[3]);
|
var statusColor = "#" + componentToHex(data.color[1]) + componentToHex(data.color[2]) + componentToHex(data.color[3]);
|
||||||
$('#status').css("backgroundColor", statusColor);
|
$('#status').css("backgroundColor", statusColor);
|
||||||
$('#status_color').text(statusColor + "- R=" + data.color[1] + ", G=" + data.color[2] + ", B=" + data.color[3]);
|
$('#status_color').text(statusColor + "- R=" + data.color[1] + ", G=" + data.color[2] + ", B=" + data.color[3]);
|
||||||
|
|||||||
Reference in New Issue
Block a user