diff --git a/readme.md b/readme.md
index c7c80286..7eaffcdd 100644
--- a/readme.md
+++ b/readme.md
@@ -1,11 +1,11 @@
![WLED logo](https://raw.githubusercontent.com/Aircoookie/WLED/development/wled_logo.png)
-## Welcome to my project WLED! (v0.8.1-dev)
+## Welcome to my project WLED! (v0.8.1)
A fast and feature-rich implementation of an ESP8266/ESP32 webserver to control NeoPixel (WS2812B) LEDs!
### Features:
-- WS2812FX library integrated for over 70 special effects
+- WS2812FX library integrated for 75 special effects
- FastLED noise effects and palettes
- Customizable Mobile and desktop UI with color and effect controls
- Settings page - configuration over network
diff --git a/wled00/NpbWrapper.h b/wled00/NpbWrapper.h
index db469816..9ea3c980 100644
--- a/wled00/NpbWrapper.h
+++ b/wled00/NpbWrapper.h
@@ -2,7 +2,7 @@
#ifndef NpbWrapper_h
#define NpbWrapper_h
-//#define WORKAROUND_ESP32_BITBANG
+#define WORKAROUND_ESP32_BITBANG
//see https://github.com/Aircoookie/WLED/issues/2 for flicker free ESP32 support
#define LEDPIN 2 //strip pin. Any for ESP32, gpio2 is recommended for ESP8266
@@ -14,6 +14,7 @@
#ifdef ARDUINO_ARCH_ESP32
#ifdef WORKAROUND_ESP32_BITBANG
#define PIXELMETHOD NeoEsp32BitBangWs2813Method
+ #pragma message "Software BitBang is used because of your NeoPixelBus version. Look in NpbWrapper.h for instructions on how to mitigate flickering."
#else
#define PIXELMETHOD NeoEsp32RmtWS2813_V3Method
#endif
diff --git a/wled00/WS2812FX.cpp b/wled00/WS2812FX.cpp
index 1e76594d..84f3bea4 100644
--- a/wled00/WS2812FX.cpp
+++ b/wled00/WS2812FX.cpp
@@ -2484,6 +2484,7 @@ uint16_t WS2812FX::mode_noise16_4(void)
}
+//based on https://gist.github.com/kriegsman/5408ecd397744ba0393e
uint16_t WS2812FX::mode_colortwinkle()
{
CRGB fastled_col, prev;
@@ -2517,7 +2518,7 @@ uint16_t WS2812FX::mode_colortwinkle()
{
int i = SEGMENT.start + random16(SEGMENT_LENGTH);
if(getPixelColor(i) == 0) {
- fastled_col = ColorFromPalette( currentPalette, random8(), 64, NOBLEND);
+ fastled_col = ColorFromPalette(currentPalette, random8(), 64, NOBLEND);
_locked[i] = true;
setPixelColor(i, fastled_col.red, fastled_col.green, fastled_col.blue);
return 20; //only spawn 1 new pixel per frame
@@ -2526,3 +2527,22 @@ uint16_t WS2812FX::mode_colortwinkle()
}
return 20;
}
+
+
+//Calm effect, like a lake at night
+uint16_t WS2812FX::mode_lake() {
+ uint8_t sp = SEGMENT.speed/10;
+ int wave1 = beatsin8(sp +2, -64,64);
+ int wave2 = beatsin8(sp +1, -64,64);
+ uint8_t wave3 = beatsin8(sp +2, 0,80);
+ CRGB fastled_col;
+
+ for (uint16_t i = SEGMENT.start; i <= SEGMENT.stop; i++)
+ {
+ int index = cos8((i*15)+ wave1)/2 + cubicwave8((i*23)+ wave2)/2;
+ uint8_t lum = (index > wave3) ? index - wave3 : 0;
+ fastled_col = ColorFromPalette(currentPalette, map(index,0,255,0,240), lum, LINEARBLEND);
+ setPixelColor(i, fastled_col.red, fastled_col.green, fastled_col.blue);
+ }
+ return 33;
+}
diff --git a/wled00/WS2812FX.h b/wled00/WS2812FX.h
index 30f44b4f..281fdbd3 100644
--- a/wled00/WS2812FX.h
+++ b/wled00/WS2812FX.h
@@ -83,7 +83,7 @@
#define REVERSE (uint8_t)0x80
#define IS_REVERSE ((SEGMENT.options & REVERSE) == REVERSE)
-#define MODE_COUNT 75
+#define MODE_COUNT 76
#define FX_MODE_STATIC 0
#define FX_MODE_BLINK 1
@@ -161,6 +161,7 @@
#define FX_MODE_NOISE16_3 72
#define FX_MODE_NOISE16_4 73
#define FX_MODE_COLORTWINKLE 74
+#define FX_MODE_LAKE 75
class WS2812FX {
typedef uint16_t (WS2812FX::*mode_ptr)(void);
@@ -264,6 +265,7 @@ class WS2812FX {
_mode[FX_MODE_NOISE16_3] = &WS2812FX::mode_noise16_3;
_mode[FX_MODE_NOISE16_4] = &WS2812FX::mode_noise16_4;
_mode[FX_MODE_COLORTWINKLE] = &WS2812FX::mode_colortwinkle;
+ _mode[FX_MODE_LAKE] = &WS2812FX::mode_lake;
_brightness = DEFAULT_BRIGHTNESS;
_running = false;
@@ -438,6 +440,7 @@ class WS2812FX {
mode_noise16_3(void),
mode_noise16_4(void),
mode_colortwinkle(void),
+ mode_lake(void),
mode_lightning(void);
private:
diff --git a/wled00/data/index.htm b/wled00/data/index.htm
index b0640d44..954c1901 100644
--- a/wled00/data/index.htm
+++ b/wled00/data/index.htm
@@ -192,10 +192,10 @@
function SwFX(s)
{
var n=Cf.TX.selectedIndex+s;
- if (n==-1||n==75) return;
+ if (n==-1||n==76) return;
Cf.TX.selectedIndex =n;
if (n < 0) Cf.TX.selectedIndex = 0;
- if (n > 74) Cf.TX.selectedIndex = 65;
+ if (n > 75) Cf.TX.selectedIndex = 65;
GX();
}
function TgHSB()
@@ -661,6 +661,7 @@
+
Set secondary color to
diff --git a/wled00/data/index_mobile.htm b/wled00/data/index_mobile.htm
index 3eb7e5c8..135eb2bf 100644
--- a/wled00/data/index_mobile.htm
+++ b/wled00/data/index_mobile.htm
@@ -433,7 +433,8 @@