Updated UI with all new palettes

FastLED effects now have default palettes per effect
Fire2012 can now use Palettes
Option for palette blending added
Added new Palettes
This commit is contained in:
cschwinne 2018-09-11 00:20:12 +02:00
parent 2466c5a204
commit 4b31610169
12 changed files with 424 additions and 472 deletions

View File

@ -1918,67 +1918,6 @@ uint16_t WS2812FX::mode_lightning(void)
} }
// WLED limitation: Analog Clock overlay will NOT work when Fire2012 is active
// Fire2012 by Mark Kriegsman, July 2012
// as part of "Five Elements" shown here: http://youtu.be/knWiGsmgycY
////
// This basic one-dimensional 'fire' simulation works roughly as follows:
// There's a underlying array of 'heat' cells, that model the temperature
// at each point along the line. Every cycle through the simulation,
// four steps are performed:
// 1) All cells cool down a little bit, losing heat to the air
// 2) The heat from each cell drifts 'up' and diffuses a little
// 3) Sometimes randomly new 'sparks' of heat are added at the bottom
// 4) The heat from each cell is rendered as a color into the leds array
// The heat-to-color mapping uses a black-body radiation approximation.
//
// Temperature is in arbitrary units from 0 (cold black) to 255 (white hot).
//
// This simulation scales it self a bit depending on NUM_LEDS; it should look
// "OK" on anywhere from 20 to 100 LEDs without too much tweaking.
//
// I recommend running this simulation at anywhere from 30-100 frames per second,
// meaning an interframe delay of about 10-35 milliseconds.
//
// Looks best on a high-density LED setup (60+ pixels/meter).
//
//
// There are two main parameters you can play with to control the look and
// feel of your fire: COOLING (used in step 1 above), and SPARKING (used
// in step 3 above) (Effect Intensity = Sparking).
//
// COOLING: How much does the air cool as it rises?
// Less cooling = taller flames. More cooling = shorter flames.
// Default 50, suggested range 20-100
#define COOLING 75
uint16_t WS2812FX::mode_fire_2012(void)
{
// Step 1. Cool down every cell a little
for( int i = SEGMENT.start; i <= SEGMENT.stop; i++) {
_locked[i] = qsub8(_locked[i], random8(0, ((COOLING * 10) / SEGMENT_LENGTH) + 2));
}
// Step 2. Heat from each cell drifts 'up' and diffuses a little
for( int k= SEGMENT.stop; k >= SEGMENT.start + 2; k--) {
_locked[k] = (_locked[k - 1] + _locked[k - 2] + _locked[k - 2] ) / 3;
}
// Step 3. Randomly ignite new 'sparks' of heat near the bottom
if( random8() <= SEGMENT.intensity ) {
int y = SEGMENT.start + random8(7);
if (y <= SEGMENT.stop) _locked[y] = qadd8(_locked[y], random8(160,255) );
}
// Step 4. Map from heat cells to LED colors
for( int j = SEGMENT.start; j <= SEGMENT.stop; j++) {
CRGB color = HeatColor(_locked[j]);
setPixelColor(j, color.red, color.green, color.blue);
}
return 10 + (uint16_t)(255 - SEGMENT.speed)/6;
}
// Pride2015 // Pride2015
// Animated, ever-changing rainbows. // Animated, ever-changing rainbows.
// by Mark Kriegsman: https://gist.github.com/kriegsman/964de772d64c502760e5 // by Mark Kriegsman: https://gist.github.com/kriegsman/964de772d64c502760e5
@ -2060,7 +1999,21 @@ void WS2812FX::handle_palette(void)
switch (SEGMENT.palette) switch (SEGMENT.palette)
{ {
case 0: {//periodically replace palette with a random one. Doesn't work with multiple FastLED segments case 0: {//default palette. Differs depending on effect
switch (SEGMENT.mode)
{
case FX_MODE_FIRE_2012 : targetPalette = gGradientPalettes[22]; break;//heat palette
case FX_MODE_COLORWAVES : targetPalette = gGradientPalettes[13]; break;//landscape 33
case FX_MODE_FILLNOISE8 : targetPalette = OceanColors_p; break;
case FX_MODE_NOISE16_1 : targetPalette = gGradientPalettes[17]; break;//Drywet
case FX_MODE_NOISE16_2 : targetPalette = gGradientPalettes[30]; break;//Blue cyan yellow
case FX_MODE_NOISE16_3 : targetPalette = gGradientPalettes[22]; break;//heat palette
case FX_MODE_NOISE16_4 : targetPalette = gGradientPalettes[13]; break;//landscape 33
default: targetPalette = PartyColors_p; break;//palette, bpm
}
break;}
case 1: {//periodically replace palette with a random one. Doesn't work with multiple FastLED segments
if (!singleSegmentMode) if (!singleSegmentMode)
{ {
targetPalette = PartyColors_p; break; //fallback targetPalette = PartyColors_p; break; //fallback
@ -2074,13 +2027,13 @@ void WS2812FX::handle_palette(void)
CHSV(random8(), 255, random8(128, 255))); CHSV(random8(), 255, random8(128, 255)));
_lastPaletteChange = millis(); _lastPaletteChange = millis();
} break;} } break;}
case 1: {//primary color only case 2: {//primary color only
CRGB prim; CRGB prim;
prim.red = (SEGMENT.colors[0] >> 16 & 0xFF); prim.red = (SEGMENT.colors[0] >> 16 & 0xFF);
prim.green = (SEGMENT.colors[0] >> 8 & 0xFF); prim.green = (SEGMENT.colors[0] >> 8 & 0xFF);
prim.blue = (SEGMENT.colors[0] & 0xFF); prim.blue = (SEGMENT.colors[0] & 0xFF);
targetPalette = CRGBPalette16(prim); break;} targetPalette = CRGBPalette16(prim); break;}
case 2: {//based on primary case 3: {//based on primary
//considering performance implications //considering performance implications
CRGB prim; CRGB prim;
prim.red = (SEGMENT.colors[0] >> 16 & 0xFF); prim.red = (SEGMENT.colors[0] >> 16 & 0xFF);
@ -2090,10 +2043,10 @@ void WS2812FX::handle_palette(void)
targetPalette = CRGBPalette16( targetPalette = CRGBPalette16(
CHSV(prim_hsv.h, prim_hsv.s, prim_hsv.v), //color itself CHSV(prim_hsv.h, prim_hsv.s, prim_hsv.v), //color itself
CHSV(prim_hsv.h, max(prim_hsv.s - 50,0), prim_hsv.v), //less saturated CHSV(prim_hsv.h, max(prim_hsv.s - 50,0), prim_hsv.v), //less saturated
CHSV(prim_hsv.h, prim_hsv.s, max(prim_hsv.h - 50,0)), //darker CHSV(prim_hsv.h, prim_hsv.s, max(prim_hsv.v - 50,0)), //darker
CHSV(prim_hsv.h, prim_hsv.s, prim_hsv.v)); //color itself CHSV(prim_hsv.h, prim_hsv.s, prim_hsv.v)); //color itself
break;} break;}
case 3: {//primary + secondary case 4: {//primary + secondary
CRGB prim; CRGB prim;
prim.red = (SEGMENT.colors[0] >> 16 & 0xFF); prim.red = (SEGMENT.colors[0] >> 16 & 0xFF);
prim.green = (SEGMENT.colors[0] >> 8 & 0xFF); prim.green = (SEGMENT.colors[0] >> 8 & 0xFF);
@ -2102,8 +2055,8 @@ void WS2812FX::handle_palette(void)
sec.red = (SEGMENT.colors[1] >> 16 & 0xFF); sec.red = (SEGMENT.colors[1] >> 16 & 0xFF);
sec.green = (SEGMENT.colors[1] >> 8 & 0xFF); sec.green = (SEGMENT.colors[1] >> 8 & 0xFF);
sec.blue = (SEGMENT.colors[1] & 0xFF); sec.blue = (SEGMENT.colors[1] & 0xFF);
targetPalette = CRGBPalette16(prim,sec,prim); break;} targetPalette = CRGBPalette16(sec,prim); break;}
case 4: {//based on primary + secondary case 5: {//based on primary + secondary
CRGB prim; CRGB prim;
prim.red = (SEGMENT.colors[0] >> 16 & 0xFF); prim.red = (SEGMENT.colors[0] >> 16 & 0xFF);
prim.green = (SEGMENT.colors[0] >> 8 & 0xFF); prim.green = (SEGMENT.colors[0] >> 8 & 0xFF);
@ -2112,35 +2065,28 @@ void WS2812FX::handle_palette(void)
sec.red = (SEGMENT.colors[1] >> 16 & 0xFF); sec.red = (SEGMENT.colors[1] >> 16 & 0xFF);
sec.green = (SEGMENT.colors[1] >> 8 & 0xFF); sec.green = (SEGMENT.colors[1] >> 8 & 0xFF);
sec.blue = (SEGMENT.colors[1] & 0xFF); sec.blue = (SEGMENT.colors[1] & 0xFF);
CHSV prim_hsv = rgb2hsv_approximate(prim); targetPalette = CRGBPalette16(sec,prim,CRGB::White); break;}
CHSV sec_hsv = rgb2hsv_approximate(sec ); case 6: //Party colors
targetPalette = CRGBPalette16(
CHSV(prim_hsv.h, prim_hsv.s, prim_hsv.v), //color itself
CHSV(prim_hsv.h, max(prim_hsv.s - 50,0), prim_hsv.v), //less saturated
CHSV(sec_hsv.h, sec_hsv.s, max(sec_hsv.v - 50,0)), //darker
CHSV(sec_hsv.h, sec_hsv.s, sec_hsv.v)); //color itself
break;}
case 5: //Party colors
targetPalette = PartyColors_p; break; targetPalette = PartyColors_p; break;
case 6: //Cloud colors case 7: //Cloud colors
targetPalette = CloudColors_p; break; targetPalette = CloudColors_p; break;
case 7: //Lava colors case 8: //Lava colors
targetPalette = LavaColors_p; break; targetPalette = LavaColors_p; break;
case 8: //Ocean colors case 9: //Ocean colors
targetPalette = OceanColors_p; break; targetPalette = OceanColors_p; break;
case 9: //Forest colors case 10: //Forest colors
targetPalette = ForestColors_p; break; targetPalette = ForestColors_p; break;
case 10: //Rainbow colors case 11: //Rainbow colors
targetPalette = RainbowColors_p; break; targetPalette = RainbowColors_p; break;
case 11: //Rainbow stripe colors case 12: //Rainbow stripe colors
targetPalette = RainbowStripeColors_p; break; targetPalette = RainbowStripeColors_p; break;
default: //progmem palettes default: //progmem palettes
targetPalette = gGradientPalettes[constrain(SEGMENT.palette -12, 0, gGradientPaletteCount -1)]; targetPalette = gGradientPalettes[constrain(SEGMENT.palette -13, 0, gGradientPaletteCount -1)];
} }
if (singleSegmentMode && paletteFade) //only blend if just one segment uses FastLED mode if (singleSegmentMode && paletteFade) //only blend if just one segment uses FastLED mode
{ {
nblendPaletteTowardPalette(currentPalette, targetPalette, 42); nblendPaletteTowardPalette(currentPalette, targetPalette, 48);
} else } else
{ {
currentPalette = targetPalette; currentPalette = targetPalette;
@ -2152,18 +2098,84 @@ uint16_t WS2812FX::mode_palette(void)
{ {
handle_palette(); handle_palette();
CRGB fastled_col; CRGB fastled_col;
bool noWrap = (paletteBlend == 2 || (paletteBlend == 0 && SEGMENT.speed == 0));
for (uint16_t i = SEGMENT.start; i <= SEGMENT.stop; i++) for (uint16_t i = SEGMENT.start; i <= SEGMENT.stop; i++)
{ {
uint8_t colorIndex = map(i,SEGMENT.start,SEGMENT.stop,0,255) + (SEGMENT_RUNTIME.counter_mode_step >> 6 & 0xFF); uint8_t colorIndex = map(i,SEGMENT.start,SEGMENT.stop,0,255) - (SEGMENT_RUNTIME.counter_mode_step >> 6 & 0xFF);
fastled_col = ColorFromPalette( currentPalette, colorIndex, 255, LINEARBLEND);
if (noWrap) colorIndex = map(colorIndex, 0, 255, 0, 240); //cut off blend at palette "end"
fastled_col = ColorFromPalette( currentPalette, colorIndex, 255, (paletteBlend == 3)? NOBLEND:LINEARBLEND);
setPixelColor(i, fastled_col.red, fastled_col.green, fastled_col.blue); setPixelColor(i, fastled_col.red, fastled_col.green, fastled_col.blue);
} }
SEGMENT_RUNTIME.counter_mode_step += SEGMENT.speed; SEGMENT_RUNTIME.counter_mode_step += SEGMENT.speed *2;
if (SEGMENT.speed == 0) SEGMENT_RUNTIME.counter_mode_step = 0; if (SEGMENT.speed == 0) SEGMENT_RUNTIME.counter_mode_step = 0;
return 20; return 20;
} }
// WLED limitation: Analog Clock overlay will NOT work when Fire2012 is active
// Fire2012 by Mark Kriegsman, July 2012
// as part of "Five Elements" shown here: http://youtu.be/knWiGsmgycY
////
// This basic one-dimensional 'fire' simulation works roughly as follows:
// There's a underlying array of 'heat' cells, that model the temperature
// at each point along the line. Every cycle through the simulation,
// four steps are performed:
// 1) All cells cool down a little bit, losing heat to the air
// 2) The heat from each cell drifts 'up' and diffuses a little
// 3) Sometimes randomly new 'sparks' of heat are added at the bottom
// 4) The heat from each cell is rendered as a color into the leds array
// The heat-to-color mapping uses a black-body radiation approximation.
//
// Temperature is in arbitrary units from 0 (cold black) to 255 (white hot).
//
// This simulation scales it self a bit depending on NUM_LEDS; it should look
// "OK" on anywhere from 20 to 100 LEDs without too much tweaking.
//
// I recommend running this simulation at anywhere from 30-100 frames per second,
// meaning an interframe delay of about 10-35 milliseconds.
//
// Looks best on a high-density LED setup (60+ pixels/meter).
//
//
// There are two main parameters you can play with to control the look and
// feel of your fire: COOLING (used in step 1 above), and SPARKING (used
// in step 3 above) (Effect Intensity = Sparking).
//
// COOLING: How much does the air cool as it rises?
// Less cooling = taller flames. More cooling = shorter flames.
// Default 50, suggested range 20-100
#define COOLING 75
uint16_t WS2812FX::mode_fire_2012(void)
{
handle_palette();
// Step 1. Cool down every cell a little
for( int i = SEGMENT.start; i <= SEGMENT.stop; i++) {
_locked[i] = qsub8(_locked[i], random8(0, ((COOLING * 10) / SEGMENT_LENGTH) + 2));
}
// Step 2. Heat from each cell drifts 'up' and diffuses a little
for( int k= SEGMENT.stop; k >= SEGMENT.start + 2; k--) {
_locked[k] = (_locked[k - 1] + _locked[k - 2] + _locked[k - 2] ) / 3;
}
// Step 3. Randomly ignite new 'sparks' of heat near the bottom
if( random8() <= SEGMENT.intensity ) {
int y = SEGMENT.start + random8(7);
if (y <= SEGMENT.stop) _locked[y] = qadd8(_locked[y], random8(160,255) );
}
// Step 4. Map from heat cells to LED colors
for( int j = SEGMENT.start; j <= SEGMENT.stop; j++) {
CRGB color = ColorFromPalette( currentPalette, min(_locked[j],240), 255, LINEARBLEND);
setPixelColor(j, color.red, color.green, color.blue);
}
return 10 + (uint16_t)(255 - SEGMENT.speed)/6;
}
// ColorWavesWithPalettes by Mark Kriegsman: https://gist.github.com/kriegsman/8281905786e8b2632aeb // ColorWavesWithPalettes by Mark Kriegsman: https://gist.github.com/kriegsman/8281905786e8b2632aeb
// This function draws color waves with an ever-changing, // This function draws color waves with an ever-changing,
// widely-varying set of parameters, using a color palette. // widely-varying set of parameters, using a color palette.
@ -2229,7 +2241,7 @@ uint16_t WS2812FX::mode_bpm(void)
handle_palette(); handle_palette();
CRGB fastled_col; CRGB fastled_col;
uint8_t beat = beatsin8(SEGMENT.speed, 64, 255); uint8_t beat = beatsin8(SEGMENT.speed, 64, 255);
for ( int i = SEGMENT.start; i <= SEGMENT.stop; i++) { for (uint16_t i = SEGMENT.start; i <= SEGMENT.stop; i++) {
fastled_col = ColorFromPalette(currentPalette, SEGMENT_RUNTIME.counter_mode_step + (i * 2), beat - SEGMENT_RUNTIME.counter_mode_step + (i * 10)); fastled_col = ColorFromPalette(currentPalette, SEGMENT_RUNTIME.counter_mode_step + (i * 2), beat - SEGMENT_RUNTIME.counter_mode_step + (i * 10));
setPixelColor(i, fastled_col.red, fastled_col.green, fastled_col.blue); setPixelColor(i, fastled_col.red, fastled_col.green, fastled_col.blue);
} }
@ -2244,12 +2256,12 @@ uint16_t WS2812FX::mode_fillnoise8(void)
if (SEGMENT_RUNTIME.counter_mode_call == 0) SEGMENT_RUNTIME.counter_mode_step = random(12345); if (SEGMENT_RUNTIME.counter_mode_call == 0) SEGMENT_RUNTIME.counter_mode_step = random(12345);
handle_palette(); handle_palette();
CRGB fastled_col; CRGB fastled_col;
for (int i = SEGMENT.start; i <= SEGMENT.stop; i++) { for (uint16_t i = SEGMENT.start; i <= SEGMENT.stop; i++) {
uint8_t index = inoise8(i * SEGMENT_LENGTH, SEGMENT_RUNTIME.counter_mode_step + i * SEGMENT_LENGTH) % 255; uint8_t index = inoise8(i * SEGMENT_LENGTH, SEGMENT_RUNTIME.counter_mode_step + i * SEGMENT_LENGTH) % 255;
fastled_col = ColorFromPalette(currentPalette, index, 255, LINEARBLEND); fastled_col = ColorFromPalette(currentPalette, index, 255, LINEARBLEND);
setPixelColor(i, fastled_col.red, fastled_col.green, fastled_col.blue); setPixelColor(i, fastled_col.red, fastled_col.green, fastled_col.blue);
} }
SEGMENT_RUNTIME.counter_mode_step += beatsin8(SEGMENT.speed, 1, 4); //10,1,4 SEGMENT_RUNTIME.counter_mode_step += beatsin8(SEGMENT.speed, 1, 6); //10,1,4
return 20; return 20;
} }
@ -2261,7 +2273,7 @@ uint16_t WS2812FX::mode_noise16_1(void)
CRGB fastled_col; CRGB fastled_col;
SEGMENT_RUNTIME.counter_mode_step += (1 + SEGMENT.speed/16); SEGMENT_RUNTIME.counter_mode_step += (1 + SEGMENT.speed/16);
for (int i = SEGMENT.start; i <= SEGMENT.stop; i++) { for (uint16_t i = SEGMENT.start; i <= SEGMENT.stop; i++) {
uint16_t shift_x = beatsin8(11); // the x position of the noise field swings @ 17 bpm uint16_t shift_x = beatsin8(11); // the x position of the noise field swings @ 17 bpm
uint16_t shift_y = SEGMENT_RUNTIME.counter_mode_step/42; // the y position becomes slowly incremented uint16_t shift_y = SEGMENT_RUNTIME.counter_mode_step/42; // the y position becomes slowly incremented
@ -2290,7 +2302,7 @@ uint16_t WS2812FX::mode_noise16_2(void)
CRGB fastled_col; CRGB fastled_col;
SEGMENT_RUNTIME.counter_mode_step += (1 + SEGMENT.speed); SEGMENT_RUNTIME.counter_mode_step += (1 + SEGMENT.speed);
for (int i = SEGMENT.start; i <= SEGMENT.stop; i++) { for (uint16_t i = SEGMENT.start; i <= SEGMENT.stop; i++) {
uint16_t shift_x = SEGMENT_RUNTIME.counter_mode_step >> 6; // x as a function of time uint16_t shift_x = SEGMENT_RUNTIME.counter_mode_step >> 6; // x as a function of time
uint16_t shift_y = SEGMENT_RUNTIME.counter_mode_step/42; uint16_t shift_y = SEGMENT_RUNTIME.counter_mode_step/42;
@ -2318,7 +2330,7 @@ uint16_t WS2812FX::mode_noise16_3(void)
CRGB fastled_col; CRGB fastled_col;
SEGMENT_RUNTIME.counter_mode_step += (1 + SEGMENT.speed); SEGMENT_RUNTIME.counter_mode_step += (1 + SEGMENT.speed);
for (int i = SEGMENT.start; i <= SEGMENT.stop; i++) { for (uint16_t i = SEGMENT.start; i <= SEGMENT.stop; i++) {
uint16_t shift_x = 4223; // no movement along x and y uint16_t shift_x = 4223; // no movement along x and y
uint16_t shift_y = 1234; uint16_t shift_y = 1234;
@ -2345,7 +2357,7 @@ uint16_t WS2812FX::mode_noise16_4(void)
handle_palette(); handle_palette();
CRGB fastled_col; CRGB fastled_col;
SEGMENT_RUNTIME.counter_mode_step += SEGMENT.speed; SEGMENT_RUNTIME.counter_mode_step += SEGMENT.speed;
for (int i = SEGMENT.start; i <= SEGMENT.stop; i++) { for (uint16_t i = SEGMENT.start; i <= SEGMENT.stop; i++) {
int16_t index = inoise16(uint32_t(i - SEGMENT.start) << 12, SEGMENT_RUNTIME.counter_mode_step/8); int16_t index = inoise16(uint32_t(i - SEGMENT.start) << 12, SEGMENT_RUNTIME.counter_mode_step/8);
fastled_col = ColorFromPalette(currentPalette, index); fastled_col = ColorFromPalette(currentPalette, index);
setPixelColor(i, fastled_col.red, fastled_col.green, fastled_col.blue); setPixelColor(i, fastled_col.red, fastled_col.green, fastled_col.blue);

View File

@ -148,10 +148,10 @@
#define FX_MODE_RANDOM_CHASE 61 #define FX_MODE_RANDOM_CHASE 61
#define FX_MODE_OSCILLATE 62 #define FX_MODE_OSCILLATE 62
//Modes that use FastLED --> //Modes that use FastLED -->
#define FX_MODE_FIRE_2012 63 #define FX_MODE_PRIDE_2015 63
#define FX_MODE_PRIDE_2015 64 #define FX_MODE_JUGGLE 64
#define FX_MODE_JUGGLE 65 #define FX_MODE_PALETTE 65
#define FX_MODE_PALETTE 66 #define FX_MODE_FIRE_2012 66
#define FX_MODE_COLORWAVES 67 #define FX_MODE_COLORWAVES 67
#define FX_MODE_BPM 68 #define FX_MODE_BPM 68
#define FX_MODE_FILLNOISE8 69 #define FX_MODE_FILLNOISE8 69
@ -271,7 +271,8 @@ class WS2812FX {
_segments[0].speed = DEFAULT_SPEED; _segments[0].speed = DEFAULT_SPEED;
_reverseMode = false; _reverseMode = false;
_skipFirstMode = false; _skipFirstMode = false;
paletteFade = true; paletteFade = 0;
paletteBlend = 0;
_locked = NULL; _locked = NULL;
_cronixieDigits = new byte[6]; _cronixieDigits = new byte[6];
bus = new NeoPixelWrapper(); bus = new NeoPixelWrapper();
@ -316,6 +317,8 @@ class WS2812FX {
show(void); show(void);
uint8_t uint8_t
paletteFade,
paletteBlend,
getBrightness(void), getBrightness(void),
getMode(void), getMode(void),
getSpeed(void), getSpeed(void),
@ -332,8 +335,6 @@ class WS2812FX {
getPowerEstimate(uint16_t leds, uint32_t c, byte b), getPowerEstimate(uint16_t leds, uint32_t c, byte b),
getSafePowerMultiplier(double safeMilliAmps, uint16_t leds, uint32_t c, byte b); getSafePowerMultiplier(double safeMilliAmps, uint16_t leds, uint32_t c, byte b);
bool paletteFade;
WS2812FX::Segment WS2812FX::Segment
getSegment(void); getSegment(void);

View File

@ -58,6 +58,7 @@
uwv = false; uwv = false;
} }
Cf.TX.selectedIndex = this.responseXML.getElementsByTagName('fx')[0].childNodes[0].nodeValue; Cf.TX.selectedIndex = this.responseXML.getElementsByTagName('fx')[0].childNodes[0].nodeValue;
Cf.FP.selectedIndex = this.responseXML.getElementsByTagName('fp')[0].childNodes[0].nodeValue;
d.Cf.SX.value = this.responseXML.getElementsByTagName('sx')[0].childNodes[0].nodeValue; d.Cf.SX.value = this.responseXML.getElementsByTagName('sx')[0].childNodes[0].nodeValue;
d.Cf.IX.value = this.responseXML.getElementsByTagName('ix')[0].childNodes[0].nodeValue; d.Cf.IX.value = this.responseXML.getElementsByTagName('ix')[0].childNodes[0].nodeValue;
nla = (this.responseXML.getElementsByTagName('nl')[0].innerHTML)!=0?true:false; nla = (this.responseXML.getElementsByTagName('nl')[0].innerHTML)!=0?true:false;
@ -171,8 +172,8 @@
case 3: gId("path1").style.fill = aC; gId("path2").style.fill = aC; case 3: gId("path1").style.fill = aC; gId("path2").style.fill = aC;
} }
tgb.style.fill=(Cf.SA.value>0)?aC:dC; tgb.style.fill=(Cf.SA.value>0)?aC:dC;
fpX.style.display=(Cf.TX.selectedIndex>65)?"block":"none"; fpX.style.display=(Cf.TX.selectedIndex>64)?"block":"none";
fof.style.fill=(Cf.TX.selectedIndex>65)?aC:dC; fof.style.fill=(Cf.TX.selectedIndex>64)?aC:dC;
fmr.style.fill=(Cf.TX.selectedIndex<1)?aC:dC; fmr.style.fill=(Cf.TX.selectedIndex<1)?aC:dC;
} }
function TgT() function TgT()
@ -194,7 +195,7 @@
if (n==-1||n==74) return; if (n==-1||n==74) return;
Cf.TX.selectedIndex =n; Cf.TX.selectedIndex =n;
if (n < 0) Cf.TX.selectedIndex = 0; if (n < 0) Cf.TX.selectedIndex = 0;
if (n > 73) Cf.TX.selectedIndex = 66; if (n > 73) Cf.TX.selectedIndex = 65;
GX(); GX();
} }
function TgHSB() function TgHSB()
@ -648,10 +649,10 @@
<option value="60">Scanner x2 (60)</option> <option value="60">Scanner x2 (60)</option>
<option value="61">Random Chase (61)</option> <option value="61">Random Chase (61)</option>
<option value="62">Oscillate (62)</option> <option value="62">Oscillate (62)</option>
<option value="63">Fire 2012 (63)</option> <option value="63">Pride 2015 (63)</option>
<option value="64">Pride 2015 (64)</option> <option value="64">Juggle (64)</option>
<option value="65">Juggle (65)</option> <option value="65">Palette (65)</option>
<option value="66">Palette (66)</option> <option value="66">Fire 2012 (66)</option>
<option value="67">Colorwaves (67)</option> <option value="67">Colorwaves (67)</option>
<option value="68">BPM (68)</option> <option value="68">BPM (68)</option>
<option value="69">Fill Noise 8 (69)</option> <option value="69">Fill Noise 8 (69)</option>
@ -670,18 +671,51 @@
<div id="fpX"> <div id="fpX">
<br>FastLED Palette<br><br> <br>FastLED Palette<br><br>
<select name="FP" onchange="GP()"> <select name="FP" onchange="GP()">
<option value="0" selected>Random Cycle</option> <option value="0" selected>Default</option>
<option value="1">Primary Color Only</option> <option value="1">Random Cycle</option>
<option value="2">Based on Primary</option> <option value="2">Primary Color Only</option>
<option value="3">Set Colors Only</option> <option value="3">Based on Primary</option>
<option value="4">Based on Set Colors</option> <option value="4">Set Colors Only</option>
<option value="5">Party Colors</option> <option value="5">Based on Set Colors</option>
<option value="6">Cloud Colors</option> <option value="6">Party</option>
<option value="7">Lava Colors</option> <option value="7">Cloud</option>
<option value="8">Ocean Colors</option> <option value="8">Lava</option>
<option value="9">Forest Colors</option> <option value="9">Ocean</option>
<option value="10">Rainbow</option> <option value="10">Forest</option>
<option value="11">Rainbow Stripe</option> <option value="11">Rainbow</option>
<option value="12">Rainbow Stripe</option>
<option value="13">Sunset</option>
<option value="14">Rivendell</option>
<option value="15">Breeze</option>
<option value="16">Red & Blue</option>
<option value="17">Yellowout</option>
<option value="18">Analogous</option>
<option value="19">Splash</option>
<option value="20">Pastel</option>
<option value="21">Sunset2</option>
<option value="22">Beech</option>
<option value="23">Vintage</option>
<option value="24">Departure</option>
<option value="25">Landscape</option>
<option value="26">Beach</option>
<option value="27">Sherbet</option>
<option value="28">Hult</option>
<option value="29">Hult64</option>
<option value="30">Drywet</option>
<option value="31">Jul</option>
<option value="32">Grintage</option>
<option value="33">Rewhi</option>
<option value="34">Tertiary</option>
<option value="35">Fire</option>
<option value="36">Icefire</option>
<option value="37">Cyane</option>
<option value="38">Light Pink</option>
<option value="39">Autumn</option>
<option value="40">Magenta</option>
<option value="41">Magred</option>
<option value="42">Yelmag</option>
<option value="43">Yelblu</option>
<option value="44">Orange & Teal</option>
</select> </select>
</div> </div>
<div id="slX" class="sl"> <div id="slX" class="sl">

View File

@ -422,10 +422,10 @@
<li onclick="X(60)">Dual Scanner</li> <li onclick="X(60)">Dual Scanner</li>
<li onclick="X(61)">Random Chase</li> <li onclick="X(61)">Random Chase</li>
<li onclick="X(62)">Oscillate</li> <li onclick="X(62)">Oscillate</li>
<li onclick="X(63)">Fire 2012</li> <li onclick="X(63)">Pride 2015</li>
<li onclick="X(64)">Pride 2015</li> <li onclick="X(64)">Juggle</li>
<li onclick="X(65)">Juggle</li> <li onclick="X(65)">Palette</li>
<li onclick="X(66)">Palette</li> <li onclick="X(66)">Fire 2012</li>
<li onclick="X(67)">Colorwaves</li> <li onclick="X(67)">Colorwaves</li>
<li onclick="X(68)">BPM</li> <li onclick="X(68)">BPM</li>
<li onclick="X(69)">Fill Noise 8</li> <li onclick="X(69)">Fill Noise 8</li>
@ -433,19 +433,53 @@
<li onclick="X(71)">Noise 16 2</li> <li onclick="X(71)">Noise 16 2</li>
<li onclick="X(72)">Noise 16 3</li> <li onclick="X(72)">Noise 16 3</li>
<li onclick="X(73)">Noise 16 4</li>&nbsp; <li onclick="X(73)">Noise 16 4</li>&nbsp;
<li><a href="#">Go to top</a></li>&nbsp;
<p style="margin-left:-37px">FastLED Palette (Effects 56-73)</p> <p style="margin-left:-37px">FastLED Palette (Effects 56-73)</p>
<li onclick="P(0)">Random Change</li> <li onclick="P(0)">Default</li>
<li onclick="P(1)">Primary Only</li> <li onclick="P(1)">Random Cycle</li>
<li onclick="P(2)">Based on Primary</li> <li onclick="P(2)">Primary Color Only</li>
<li onclick="P(3)">Set Colors Only</li> <li onclick="P(3)">Based on Primary</li>
<li onclick="P(4)">Based on Set</li> <li onclick="P(4)">Set Colors Only</li>
<li onclick="P(5)">Party</li> <li onclick="P(5)">Based on Set Colors</li>
<li onclick="P(6)">Cloud</li> <li onclick="P(6)">Party</li>
<li onclick="P(7)">Lava</li> <li onclick="P(7)">Cloud</li>
<li onclick="P(8)">Ocean</li> <li onclick="P(8)">Lava</li>
<li onclick="P(9)">Forest</li> <li onclick="P(9)">Ocean</li>
<li onclick="P(10)">Rainbow</li> <li onclick="P(10)">Forest</li>
<li onclick="P(11)">Rainbow Stripe</li> <li onclick="P(11)">Rainbow</li>
<li onclick="P(12)">Rainbow Stripe</li>
<li onclick="P(13)">Sunset</li>
<li onclick="P(14)">Rivendell</li>
<li onclick="P(15)">Breeze</li>
<li onclick="P(16)">Red & Blue</li>
<li onclick="P(17)">Yellowout</li>
<li onclick="P(18)">Analogous</li>
<li onclick="P(19)">Splash</li>
<li onclick="P(20)">Pastel</li>
<li onclick="P(21)">Sunset2</li>
<li onclick="P(22)">Beech</li>
<li onclick="P(23)">Vintage</li>
<li onclick="P(24)">Departure</li>
<li onclick="P(25)">Landscape</li>
<li onclick="P(26)">Beach</li>
<li onclick="P(27)">Sherbet</li>
<li onclick="P(28)">Hult</li>
<li onclick="P(29)">Hult64</li>
<li onclick="P(30)">Drywet</li>
<li onclick="P(31)">Jul</li>
<li onclick="P(32)">Grintage</li>
<li onclick="P(33)">Rewhi</li>
<li onclick="P(34)">Tertiary</li>
<li onclick="P(35)">Fire</li>
<li onclick="P(36)">Icefire</li>
<li onclick="P(37)">Cyane</li>
<li onclick="P(38)">Light Pink</li>
<li onclick="P(39)">Autumn</li>
<li onclick="P(40)">Magenta</li>
<li onclick="P(41)">Magred</li>
<li onclick="P(42)">Yelmag</li>
<li onclick="P(43)">Yelblu</li>
<li onclick="P(44)">Orange & Teal</li>
&nbsp; &nbsp;
<li><a href="#">Go to top</a></li></div> <li><a href="#">Go to top</a></li></div>
<iframe id="stf" onload="feedback();" style="display:none;"></iframe> <iframe id="stf" onload="feedback();" style="display:none;"></iframe>

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -86,7 +86,10 @@ const char PAGE_settings_leds1[] PROGMEM = R"=====(
<h2>LED setup</h2> <h2>LED setup</h2>
LED count: <input name="LC" type="number" min="1" max="1200" required><br> LED count: <input name="LC" type="number" min="1" max="1200" required><br>
LEDs are 4-channel type (RGBW): <input type="checkbox" name="EW"><br> LEDs are 4-channel type (RGBW): <input type="checkbox" name="EW"><br>
<br>
Apply preset <input name="BP" type="number" min="0" max="25" required> at boot (0 uses defaults)<br> Apply preset <input name="BP" type="number" min="0" max="25" required> at boot (0 uses defaults)<br>
Turn on after power up/reset: <input type="checkbox" name="BO"><br>
<br>
Default RGB color: Default RGB color:
<input name="CR" type="number" min="0" max="255" required> <input name="CR" type="number" min="0" max="255" required>
<input name="CG" type="number" min="0" max="255" required> <input name="CG" type="number" min="0" max="255" required>
@ -105,12 +108,12 @@ Default secondary RGB(W):<br>
<input name="SW" type="number" min="0" max="255" required><br> <input name="SW" type="number" min="0" max="255" required><br>
Ignore and use current color, brightness and effects: <input type="checkbox" name="IS"><br> Ignore and use current color, brightness and effects: <input type="checkbox" name="IS"><br>
Save current preset cycle configuration as boot default: <input type="checkbox" name="PC"><br> Save current preset cycle configuration as boot default: <input type="checkbox" name="PC"><br>
Turn on after power up/reset: <input type="checkbox" name="BO"><br> <br>
Use Gamma correction for brightness: <input type="checkbox" name="GB"><br> Use Gamma correction for color: <input type="checkbox" name="GC"> (strongly recommended)<br>
Use Gamma correction for color: <input type="checkbox" name="GC"><br> Use Gamma correction for brightness: <input type="checkbox" name="GB"> (not recommended)<br>
Brightness factor: <input name="BF" type="number" min="0" max="255" required> % Brightness factor: <input name="BF" type="number" min="0" max="255" required> %
<h3>Transitions</h3> <h3>Transitions</h3>
Fade: <input type="checkbox" name="TF"><br> Crossfade: <input type="checkbox" name="TF"><br>
Transition Time: <input name="TD" maxlength="5" size="2"> ms<br> Transition Time: <input name="TD" maxlength="5" size="2"> ms<br>
Enable transition for secondary color: <input type="checkbox" name="T2"><br> Enable transition for secondary color: <input type="checkbox" name="T2"><br>
Enable Palette transitions: <input type="checkbox" name="PF"> Enable Palette transitions: <input type="checkbox" name="PF">
@ -119,6 +122,13 @@ Default Duration: <input name="TL" type="number" min="1" max="255" required> min
Default Target brightness: <input name="TB" type="number" min="0" max="255" required><br> Default Target brightness: <input name="TB" type="number" min="0" max="255" required><br>
Fade down: <input type="checkbox" name="TW"><br> Fade down: <input type="checkbox" name="TW"><br>
<h3>Advanced</h3> <h3>Advanced</h3>
Palette blending:
<select name="PB">
<option value="0">Linear (wrap if moving)</option>
<option value="1">Linear (always wrap)</option>
<option value="2">Linear (never wrap)</option>
<option value="3">None (not recommended)</option>
</select><br>
Reverse LED order (rotate 180): <input type="checkbox" name="RV"><br> Reverse LED order (rotate 180): <input type="checkbox" name="RV"><br>
Init LEDs after WiFi: <input type="checkbox" name="EI"><br> Init LEDs after WiFi: <input type="checkbox" name="EI"><br>
Skip first LED: <input type="checkbox" name="SL"><hr> Skip first LED: <input type="checkbox" name="SL"><hr>

View File

@ -26,6 +26,7 @@ DEFINE_GRADIENT_PALETTE( es_vintage_57_gp ) {
153, 167,135, 10, 153, 167,135, 10,
255, 46, 56, 4}; 255, 46, 56, 4};
// Gradient palette "es_vintage_01_gp", originally from // Gradient palette "es_vintage_01_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/vintage/tn/es_vintage_01.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/vintage/tn/es_vintage_01.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
@ -41,6 +42,7 @@ DEFINE_GRADIENT_PALETTE( es_vintage_01_gp ) {
229, 4, 1, 1, 229, 4, 1, 1,
255, 4, 1, 1}; 255, 4, 1, 1};
// Gradient palette "es_rivendell_15_gp", originally from // Gradient palette "es_rivendell_15_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/rivendell/tn/es_rivendell_15.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/rivendell/tn/es_rivendell_15.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
@ -53,21 +55,24 @@ DEFINE_GRADIENT_PALETTE( es_rivendell_15_gp ) {
242, 150,156, 99, 242, 150,156, 99,
255, 150,156, 99}; 255, 150,156, 99};
// Gradient palette "rgi_15_gp", originally from // Gradient palette "rgi_15_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/ds/rgi/tn/rgi_15.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/ds/rgi/tn/rgi_15.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
// Size: 36 bytes of program space. // Size: 36 bytes of program space.
// Edited to be brighter
DEFINE_GRADIENT_PALETTE( rgi_15_gp ) { DEFINE_GRADIENT_PALETTE( rgi_15_gp ) {
0, 4, 1, 31, 0, 4, 1, 70,
31, 55, 1, 16, 31, 55, 1, 30,
63, 197, 3, 7, 63, 255, 4, 7,
95, 59, 2, 17, 95, 59, 2, 29,
127, 6, 2, 34, 127, 11, 3, 50,
159, 39, 6, 33, 159, 39, 8, 60,
191, 112, 13, 32, 191, 112, 19, 40,
223, 56, 9, 35, 223, 78, 11, 39,
255, 22, 6, 38}; 255, 29, 8, 59};
// Gradient palette "retro2_16_gp", originally from // Gradient palette "retro2_16_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/ma/retro2/tn/retro2_16.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/ma/retro2/tn/retro2_16.png.index.html
@ -78,6 +83,7 @@ DEFINE_GRADIENT_PALETTE( retro2_16_gp ) {
0, 188,135, 1, 0, 188,135, 1,
255, 46, 7, 1}; 255, 46, 7, 1};
// Gradient palette "Analogous_1_gp", originally from // Gradient palette "Analogous_1_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/red/tn/Analogous_1.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/red/tn/Analogous_1.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
@ -90,6 +96,7 @@ DEFINE_GRADIENT_PALETTE( Analogous_1_gp ) {
191, 142, 0, 45, 191, 142, 0, 45,
255, 255, 0, 0}; 255, 255, 0, 0};
// Gradient palette "es_pinksplash_08_gp", originally from // Gradient palette "es_pinksplash_08_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/pink_splash/tn/es_pinksplash_08.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/pink_splash/tn/es_pinksplash_08.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
@ -102,45 +109,6 @@ DEFINE_GRADIENT_PALETTE( es_pinksplash_08_gp ) {
221, 157, 3,112, 221, 157, 3,112,
255, 157, 3,112}; 255, 157, 3,112};
// Gradient palette "es_pinksplash_07_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/pink_splash/tn/es_pinksplash_07.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5)
// Size: 28 bytes of program space.
DEFINE_GRADIENT_PALETTE( es_pinksplash_07_gp ) {
0, 229, 1, 1,
61, 242, 4, 63,
101, 255, 12,255,
127, 249, 81,252,
153, 255, 11,235,
193, 244, 5, 68,
255, 232, 1, 5};
// Gradient palette "Coral_reef_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/other/tn/Coral_reef.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5)
// Size: 24 bytes of program space.
DEFINE_GRADIENT_PALETTE( Coral_reef_gp ) {
0, 40,199,197,
50, 10,152,155,
96, 1,111,120,
96, 43,127,162,
139, 10, 73,111,
255, 1, 34, 71};
// Gradient palette "es_ocean_breeze_068_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/ocean_breeze/tn/es_ocean_breeze_068.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5)
// Size: 24 bytes of program space.
DEFINE_GRADIENT_PALETTE( es_ocean_breeze_068_gp ) {
0, 100,156,153,
51, 1, 99,137,
101, 1, 68, 84,
104, 35,142,168,
178, 0, 63,117,
255, 1, 10, 10};
// Gradient palette "es_ocean_breeze_036_gp", originally from // Gradient palette "es_ocean_breeze_036_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/ocean_breeze/tn/es_ocean_breeze_036.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/ocean_breeze/tn/es_ocean_breeze_036.png.index.html
@ -153,6 +121,7 @@ DEFINE_GRADIENT_PALETTE( es_ocean_breeze_036_gp ) {
153, 144,209,255, 153, 144,209,255,
255, 0, 73, 82}; 255, 0, 73, 82};
// Gradient palette "departure_gp", originally from // Gradient palette "departure_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/mjf/tn/departure.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/mjf/tn/departure.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
@ -172,6 +141,7 @@ DEFINE_GRADIENT_PALETTE( departure_gp ) {
212, 0, 55, 0, 212, 0, 55, 0,
255, 0, 55, 0}; 255, 0, 55, 0};
// Gradient palette "es_landscape_64_gp", originally from // Gradient palette "es_landscape_64_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/landscape/tn/es_landscape_64.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/landscape/tn/es_landscape_64.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
@ -188,6 +158,7 @@ DEFINE_GRADIENT_PALETTE( es_landscape_64_gp ) {
204, 59,117,250, 204, 59,117,250,
255, 1, 37,192}; 255, 1, 37,192};
// Gradient palette "es_landscape_33_gp", originally from // Gradient palette "es_landscape_33_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/landscape/tn/es_landscape_33.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/landscape/tn/es_landscape_33.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
@ -201,6 +172,7 @@ DEFINE_GRADIENT_PALETTE( es_landscape_33_gp ) {
66, 39,142, 74, 66, 39,142, 74,
255, 1, 4, 1}; 255, 1, 4, 1};
// Gradient palette "rainbowsherbet_gp", originally from // Gradient palette "rainbowsherbet_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/ma/icecream/tn/rainbowsherbet.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/ma/icecream/tn/rainbowsherbet.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
@ -215,6 +187,7 @@ DEFINE_GRADIENT_PALETTE( rainbowsherbet_gp ) {
209, 42,255, 22, 209, 42,255, 22,
255, 87,255, 65}; 255, 87,255, 65};
// Gradient palette "gr65_hult_gp", originally from // Gradient palette "gr65_hult_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/hult/tn/gr65_hult.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/hult/tn/gr65_hult.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
@ -228,6 +201,7 @@ DEFINE_GRADIENT_PALETTE( gr65_hult_gp ) {
216, 1,124,109, 216, 1,124,109,
255, 1,124,109}; 255, 1,124,109};
// Gradient palette "gr64_hult_gp", originally from // Gradient palette "gr64_hult_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/hult/tn/gr64_hult.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/hult/tn/gr64_hult.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
@ -243,6 +217,7 @@ DEFINE_GRADIENT_PALETTE( gr64_hult_gp ) {
239, 0, 55, 45, 239, 0, 55, 45,
255, 0, 55, 45}; 255, 0, 55, 45};
// Gradient palette "GMT_drywet_gp", originally from // Gradient palette "GMT_drywet_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/gmt/tn/GMT_drywet.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/gmt/tn/GMT_drywet.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
@ -257,6 +232,7 @@ DEFINE_GRADIENT_PALETTE( GMT_drywet_gp ) {
212, 1, 1,111, 212, 1, 1,111,
255, 1, 7, 33}; 255, 1, 7, 33};
// Gradient palette "ib15_gp", originally from // Gradient palette "ib15_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/ing/general/tn/ib15.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/ing/general/tn/ib15.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
@ -270,28 +246,19 @@ DEFINE_GRADIENT_PALETTE( ib15_gp ) {
141, 137, 31, 39, 141, 137, 31, 39,
255, 59, 33, 89}; 255, 59, 33, 89};
// Gradient palette "Fuschia_7_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/ds/fuschia/tn/Fuschia-7.png.index.html // Gradient palette "Tertiary_01_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/vermillion/tn/Tertiary_01.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
// Size: 20 bytes of program space. // Size: 20 bytes of program space.
DEFINE_GRADIENT_PALETTE( Fuschia_7_gp ) { DEFINE_GRADIENT_PALETTE( Tertiary_01_gp ) {
0, 43, 3,153, 0, 0, 1,255,
63, 100, 4,103, 63, 3, 68, 45,
127, 188, 5, 66, 127, 23,255, 0,
191, 161, 11,115, 191, 100, 68, 1,
255, 135, 20,182}; 255, 255, 1, 4};
// Gradient palette "es_emerald_dragon_08_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/emerald_dragon/tn/es_emerald_dragon_08.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5)
// Size: 16 bytes of program space.
DEFINE_GRADIENT_PALETTE( es_emerald_dragon_08_gp ) {
0, 97,255, 1,
101, 47,133, 1,
178, 13, 43, 1,
255, 2, 10, 1};
// Gradient palette "lava_gp", originally from // Gradient palette "lava_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/neota/elem/tn/lava.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/neota/elem/tn/lava.png.index.html
@ -313,20 +280,22 @@ DEFINE_GRADIENT_PALETTE( lava_gp ) {
244, 255,255, 71, 244, 255,255, 71,
255, 255,255,255}; 255, 255,255,255};
// Gradient palette "fire_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/neota/elem/tn/fire.png.index.html // Gradient palette "fierce_ice_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/neota/elem/tn/fierce-ice.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
// Size: 28 bytes of program space. // Size: 28 bytes of program space.
DEFINE_GRADIENT_PALETTE( fire_gp ) { DEFINE_GRADIENT_PALETTE( fierce_ice_gp ) {
0, 1, 1, 0, 0, 0, 0, 0,
76, 32, 5, 0, 59, 0, 9, 45,
146, 192, 24, 0, 119, 0, 38,255,
197, 220,105, 5, 149, 3,100,255,
240, 252,255, 31, 180, 23,199,255,
250, 252,255,111, 217, 100,235,255,
255, 255,255,255}; 255, 255,255,255};
// Gradient palette "Colorfull_gp", originally from // Gradient palette "Colorfull_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/atmospheric/tn/Colorfull.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/atmospheric/tn/Colorfull.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
@ -345,19 +314,6 @@ DEFINE_GRADIENT_PALETTE( Colorfull_gp ) {
168, 100,180,155, 168, 100,180,155,
255, 22,121,174}; 255, 22,121,174};
// Gradient palette "Magenta_Evening_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/atmospheric/tn/Magenta_Evening.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5)
// Size: 28 bytes of program space.
DEFINE_GRADIENT_PALETTE( Magenta_Evening_gp ) {
0, 71, 27, 39,
31, 130, 11, 51,
63, 213, 2, 64,
70, 232, 1, 66,
76, 252, 1, 69,
108, 123, 2, 51,
255, 46, 9, 35};
// Gradient palette "Pink_Purple_gp", originally from // Gradient palette "Pink_Purple_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/atmospheric/tn/Pink_Purple.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/atmospheric/tn/Pink_Purple.png.index.html
@ -377,6 +333,7 @@ DEFINE_GRADIENT_PALETTE( Pink_Purple_gp ) {
183, 128, 57,155, 183, 128, 57,155,
255, 146, 40,123}; 255, 146, 40,123};
// Gradient palette "Sunset_Real_gp", originally from // Gradient palette "Sunset_Real_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/atmospheric/tn/Sunset_Real.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/atmospheric/tn/Sunset_Real.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
@ -391,6 +348,68 @@ DEFINE_GRADIENT_PALETTE( Sunset_Real_gp ) {
198, 16, 0,130, 198, 16, 0,130,
255, 0, 0,160}; 255, 0, 0,160};
// Gradient palette "Sunset_Yellow_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/atmospheric/tn/Sunset_Yellow.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5)
// Size: 44 bytes of program space.
DEFINE_GRADIENT_PALETTE( Sunset_Yellow_gp ) {
0, 10, 62,123,
36, 56,130,103,
87, 153,225, 85,
100, 199,217, 68,
107, 255,207, 54,
115, 247,152, 57,
120, 239,107, 61,
128, 247,152, 57,
180, 255,207, 54,
223, 255,227, 48,
255, 255,248, 42};
// Gradient palette "Beech_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/atmospheric/tn/Beech.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5)
// Size: 60 bytes of program space.
DEFINE_GRADIENT_PALETTE( Beech_gp ) {
0, 255,252,214,
12, 255,252,214,
22, 255,252,214,
26, 190,191,115,
28, 137,141, 52,
28, 112,255,205,
50, 51,246,214,
71, 17,235,226,
93, 2,193,199,
120, 0,156,174,
133, 1,101,115,
136, 1, 59, 71,
136, 7,131,170,
208, 1, 90,151,
255, 0, 56,133};
// Gradient palette "Another_Sunset_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/atmospheric/tn/Another_Sunset.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5)
// Size: 32 bytes of program space.
DEFINE_GRADIENT_PALETTE( Another_Sunset_gp ) {
0, 110, 49, 11,
29, 55, 34, 10,
68, 22, 22, 9,
68, 239,124, 8,
97, 220,156, 27,
124, 203,193, 61,
178, 33, 53, 56,
255, 0, 1, 52};
// Gradient palette "es_autumn_19_gp", originally from // Gradient palette "es_autumn_19_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/autumn/tn/es_autumn_19.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/autumn/tn/es_autumn_19.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
@ -411,6 +430,7 @@ DEFINE_GRADIENT_PALETTE( es_autumn_19_gp ) {
249, 17, 1, 1, 249, 17, 1, 1,
255, 17, 1, 1}; 255, 17, 1, 1};
// Gradient palette "BlacK_Blue_Magenta_White_gp", originally from // Gradient palette "BlacK_Blue_Magenta_White_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/basic/tn/BlacK_Blue_Magenta_White.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/basic/tn/BlacK_Blue_Magenta_White.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
@ -425,6 +445,7 @@ DEFINE_GRADIENT_PALETTE( BlacK_Blue_Magenta_White_gp ) {
212, 255, 55,255, 212, 255, 55,255,
255, 255,255,255}; 255, 255,255,255};
// Gradient palette "BlacK_Magenta_Red_gp", originally from // Gradient palette "BlacK_Magenta_Red_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/basic/tn/BlacK_Magenta_Red.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/basic/tn/BlacK_Magenta_Red.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
@ -437,6 +458,7 @@ DEFINE_GRADIENT_PALETTE( BlacK_Magenta_Red_gp ) {
191, 255, 0, 45, 191, 255, 0, 45,
255, 255, 0, 0}; 255, 255, 0, 0};
// Gradient palette "BlacK_Red_Magenta_Yellow_gp", originally from // Gradient palette "BlacK_Red_Magenta_Yellow_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/basic/tn/BlacK_Red_Magenta_Yellow.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/basic/tn/BlacK_Red_Magenta_Yellow.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
@ -451,6 +473,7 @@ DEFINE_GRADIENT_PALETTE( BlacK_Red_Magenta_Yellow_gp ) {
212, 255, 55, 45, 212, 255, 55, 45,
255, 255,255, 0}; 255, 255,255, 0};
// Gradient palette "Blue_Cyan_Yellow_gp", originally from // Gradient palette "Blue_Cyan_Yellow_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/basic/tn/Blue_Cyan_Yellow.png.index.html // http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/basic/tn/Blue_Cyan_Yellow.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5) // converted for FastLED with gammas (2.6, 2.2, 2.5)
@ -464,73 +487,13 @@ DEFINE_GRADIENT_PALETTE( Blue_Cyan_Yellow_gp ) {
255, 255,255, 0}; 255, 255,255, 0};
//Custom palette by Aircoookie
DEFINE_GRADIENT_PALETTE( Orange_Teal_gp ) {
0, 0,150, 92,
55, 0,150, 92,
200, 255, 72, 0,
255, 255, 72, 0};
// Gradient palette "BlacK_Blue_Cyan_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/basic/tn/BlacK_Blue_Cyan.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5)
// Size: 20 bytes of program space.
DEFINE_GRADIENT_PALETTE( BlacK_Blue_Cyan_gp ) {
0, 0, 0, 0,
63, 0, 0, 45,
127, 0, 0,255,
191, 0, 55,255,
255, 0,255,255};
// Gradient palette "BlacK_Blue_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/basic/tn/BlacK_Blue.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5)
// Size: 12 bytes of program space.
DEFINE_GRADIENT_PALETTE( BlacK_Blue_gp ) {
0, 0, 0, 0,
127, 0, 0, 45,
255, 0, 0,255};
// Gradient palette "Red_Black_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/basic/tn/Red_Black.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5)
// Size: 12 bytes of program space.
DEFINE_GRADIENT_PALETTE( Red_Black_gp ) {
0, 255, 0, 0,
127, 42, 0, 0,
255, 0, 0, 0};
// Gradient palette "Yellow_Black_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/basic/tn/Yellow_Black.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5)
// Size: 12 bytes of program space.
DEFINE_GRADIENT_PALETTE( Yellow_Black_gp ) {
0, 255,255, 0,
127, 42, 55, 0,
255, 0, 0, 0};
// Gradient palette "bhw1_hello_gp", originally from
// http://soliton.vm.bytemark.co.uk/pub/cpt-city/bhw/bhw1/tn/bhw1_hello.png.index.html
// converted for FastLED with gammas (2.6, 2.2, 2.5)
// Size: 32 bytes of program space.
DEFINE_GRADIENT_PALETTE( bhw1_hello_gp ) {
0, 237,156,197,
35, 244,189,230,
56, 255,255,255,
79, 244,189,230,
109, 237,156,197,
160, 121,255,255,
196, 255,255,255,
255, 121,255,255};
// Single array of defined cpt-city color palettes. // Single array of defined cpt-city color palettes.
@ -544,39 +507,38 @@ DEFINE_GRADIENT_PALETTE( bhw1_hello_gp ) {
// This list of color palettes acts as a "playlist"; you can // This list of color palettes acts as a "playlist"; you can
// add or delete, or re-arrange as you wish. // add or delete, or re-arrange as you wish.
const TProgmemRGBGradientPalettePtr gGradientPalettes[] = { const TProgmemRGBGradientPalettePtr gGradientPalettes[] = {
Sunset_Real_gp, //12 Sunset_Real_gp, //13-00 Sunset
es_rivendell_15_gp, //13 es_rivendell_15_gp, //14-01 Rivendell
es_ocean_breeze_036_gp, //14 es_ocean_breeze_036_gp, //15-02 Breeze
rgi_15_gp, //15 rgi_15_gp, //16-03 Red & Blue
retro2_16_gp, //16 retro2_16_gp, //17-04 Yellowout
Analogous_1_gp, //17 Analogous_1_gp, //18-05 Analogous
es_pinksplash_08_gp, //18 es_pinksplash_08_gp, //19-06 Splash
Coral_reef_gp, //19 Sunset_Yellow_gp, //20-07 Pastel
es_ocean_breeze_068_gp, //20 Another_Sunset_gp, //21-08 Sunset2
es_pinksplash_07_gp, //21 Beech_gp, //22-09 Beech
es_vintage_01_gp, //22 es_vintage_01_gp, //23-10 Vintage
departure_gp, //23 departure_gp, //24-11 Departure
es_landscape_64_gp, //24 es_landscape_64_gp, //25-12 Landscape
es_landscape_33_gp, //25 es_landscape_33_gp, //26-13 Beach
rainbowsherbet_gp, //26 rainbowsherbet_gp, //27-14 Sherbet
gr65_hult_gp, //27 gr65_hult_gp, //28-15 Hult
gr64_hult_gp, //28 gr64_hult_gp, //29-16 Hult64
GMT_drywet_gp, //29 GMT_drywet_gp, //30-17 Drywet
ib_jul01_gp, //30 ib_jul01_gp, //31-18 Jul
es_vintage_57_gp, //31 es_vintage_57_gp, //32-19 Grintage
ib15_gp, //32 ib15_gp, //33-20 Rewhi
Fuschia_7_gp, //33 Tertiary_01_gp, //34-21 Tertiary
es_emerald_dragon_08_gp, //34 lava_gp, //35-22 Fire
lava_gp, //35 fierce_ice_gp, //36-23 Icefire
fire_gp, //36 Colorfull_gp, //37-24 Cyane
Colorfull_gp, //37 Pink_Purple_gp, //38-25 Light Pink
Magenta_Evening_gp, //38 es_autumn_19_gp, //39-26 Autumn
Pink_Purple_gp, //39 BlacK_Blue_Magenta_White_gp, //40-27 Magenta
es_autumn_19_gp, //40 BlacK_Magenta_Red_gp, //41-28 Magred
BlacK_Blue_Magenta_White_gp, //41 BlacK_Red_Magenta_Yellow_gp, //42-29 Yelmag
BlacK_Magenta_Red_gp, //42 Blue_Cyan_Yellow_gp, //43-30 Yelblu
BlacK_Red_Magenta_Yellow_gp, //43 Orange_Teal_gp //44-31 Orange & Teal
Blue_Cyan_Yellow_gp, //44
}; };

View File

@ -39,7 +39,7 @@
#include "src/dependencies/e131/E131.h" #include "src/dependencies/e131/E131.h"
//version in format yymmddb (b = daily build) //version in format yymmddb (b = daily build)
#define VERSION 1809084 #define VERSION 1809103
char versionString[] = "0.8.0-a"; char versionString[] = "0.8.0-a";
//AP and OTA default passwords (change them!) //AP and OTA default passwords (change them!)

View File

@ -6,7 +6,7 @@
#define EEPSIZE 3072 #define EEPSIZE 3072
//eeprom Version code, enables default settings instead of 0 init on update //eeprom Version code, enables default settings instead of 0 init on update
#define EEPVER 7 #define EEPVER 8
//0 -> old version, default //0 -> old version, default
//1 -> 0.4p 1711272 and up //1 -> 0.4p 1711272 and up
//2 -> 0.4p 1711302 and up //2 -> 0.4p 1711302 and up
@ -129,7 +129,8 @@ void saveSettingsToEEPROM()
EEPROM.write(379, colSecS[1]); EEPROM.write(379, colSecS[1]);
EEPROM.write(380, colSecS[2]); EEPROM.write(380, colSecS[2]);
EEPROM.write(381, whiteSecS); EEPROM.write(381, whiteSecS);
EEPROM.write(382, strip.paletteBlend);
EEPROM.write(389, bootPreset); EEPROM.write(389, bootPreset);
EEPROM.write(390, aOtaEnabled); EEPROM.write(390, aOtaEnabled);
EEPROM.write(391, receiveNotificationColor); EEPROM.write(391, receiveNotificationColor);
@ -356,7 +357,7 @@ void loadSettingsFromEEPROM(bool first)
whiteS = EEPROM.read(371); white = whiteS; whiteS = EEPROM.read(371); white = whiteS;
useRGBW = EEPROM.read(372); useRGBW = EEPROM.read(372);
effectPaletteDefault = EEPROM.read(373); effectPalette = effectPaletteDefault; effectPaletteDefault = EEPROM.read(373); effectPalette = effectPaletteDefault;
strip.paletteFade = EEPROM.read(374); //374 - strip.paletteFade
if (lastEEPROMversion > 0) { if (lastEEPROMversion > 0) {
apWaitTimeSecs = EEPROM.read(375); apWaitTimeSecs = EEPROM.read(375);
@ -444,6 +445,12 @@ void loadSettingsFromEEPROM(bool first)
arlsForceMaxBri = EEPROM.read(2195); arlsForceMaxBri = EEPROM.read(2195);
arlsDisableGammaCorrection = EEPROM.read(2196); arlsDisableGammaCorrection = EEPROM.read(2196);
} }
if (lastEEPROMversion > 7)
{
strip.paletteFade = EEPROM.read(374);
strip.paletteBlend = EEPROM.read(382);
}
receiveDirect = !EEPROM.read(2200); receiveDirect = !EEPROM.read(2200);
enableRealtimeUI = EEPROM.read(2201); enableRealtimeUI = EEPROM.read(2201);

View File

@ -198,6 +198,7 @@ void getSettingsJS(byte subPage) //get values for settings form in javascript
sappend('v',"TB",nightlightTargetBri); sappend('v',"TB",nightlightTargetBri);
sappend('v',"TL",nightlightDelayMins); sappend('v',"TL",nightlightDelayMins);
sappend('c',"TW",nightlightFade); sappend('c',"TW",nightlightFade);
sappend('i',"PB",strip.paletteBlend);
sappend('c',"RV",reverseMode); sappend('c',"RV",reverseMode);
sappend('c',"EI",initLedsLast); sappend('c',"EI",initLedsLast);
sappend('c',"SL",skipFirstLed); sappend('c',"SL",skipFirstLed);

View File

@ -184,6 +184,13 @@ void handleSettingsSet(byte subPage)
} }
nightlightFade = server.hasArg("TW"); nightlightFade = server.hasArg("TW");
reverseMode = server.hasArg("RV"); reverseMode = server.hasArg("RV");
if (server.hasArg("PB"))
{
int i = server.arg("PB").toInt();
if (i >= 0){
strip.paletteBlend = i;
}
}
initLedsLast = server.hasArg("EI"); initLedsLast = server.hasArg("EI");
strip.setReverseMode(reverseMode); strip.setReverseMode(reverseMode);
skipFirstLed = server.hasArg("SL"); skipFirstLed = server.hasArg("SL");