diff --git a/CHANGELOG.md b/CHANGELOG.md
index a2949a608..7cbda3f6f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,12 @@
### Development versions after 0.11.1 release
+#### Build 2102050
+
+- Version bump to 0.12.0-a0 "Hikari"
+- Added FPS indication in info
+- Bumped max outputs from 7 to 10 busses for ESP32
+
#### Build 2101310
- First alpha configurable multipin
diff --git a/package.json b/package.json
index ba3add2f4..b9269cfde 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "wled",
- "version": "0.11.1",
+ "version": "0.12.0-a0",
"description": "Tools for WLED project",
"main": "tools/cdata.js",
"directories": {
diff --git a/platformio.ini b/platformio.ini
index b61cd88b6..858c2b8b6 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -12,7 +12,7 @@
default_envs = travis_esp8266, travis_esp32
# Release binaries
-; default_envs = nodemcuv2, esp01_1m_full, esp32dev, custom_WS2801, custom_APA102, custom_LEDPIN_16, custom_LEDPIN_4, custom_LEDPIN_3, custom32_LEDPIN_16, custom32_APA102
+; default_envs = nodemcuv2, esp01_1m_full, esp32dev
# Single binaries (uncomment your board)
; default_envs = nodemcuv2
diff --git a/wled00/FX.h b/wled00/FX.h
index e6c7cbd8f..ba2fbc6e8 100644
--- a/wled00/FX.h
+++ b/wled00/FX.h
@@ -651,7 +651,8 @@ class WS2812FX {
currentMilliamps,
// setStripLen(uint8_t strip, uint16_t len),
// getStripLen(uint8_t strip=0),
- triwave16(uint16_t);
+ triwave16(uint16_t),
+ getFps();
uint32_t
now,
@@ -808,6 +809,8 @@ class WS2812FX {
uint16_t _usedSegmentData = 0;
uint16_t _transitionDur = 750;
+ uint16_t _cumulativeFps = 2;
+
void load_gradient_palette(uint8_t);
void handle_palette(void);
diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp
index 98d0131d8..2a6537df0 100644
--- a/wled00/FX_fcn.cpp
+++ b/wled00/FX_fcn.cpp
@@ -324,7 +324,12 @@ void WS2812FX::show(void) {
// all of the data has been sent.
// See https://github.com/Makuna/NeoPixelBus/wiki/ESP32-NeoMethods#neoesp32rmt-methods
busses.show();
- _lastShow = millis();
+ unsigned long now = millis();
+ unsigned long diff = now - _lastShow;
+ uint16_t fpsCurr = 200;
+ if (diff > 0) fpsCurr = 1000 / diff;
+ _cumulativeFps = (3 * _cumulativeFps + fpsCurr) >> 2;
+ _lastShow = now;
}
/**
@@ -335,6 +340,15 @@ bool WS2812FX::isUpdating() {
return !busses.canAllShow();
}
+/**
+ * Returns the refresh rate of the LED strip. Useful for finding out whether a given setup is fast enough.
+ * Only updates on show() or is set to 0 fps if last show is more than 2 secs ago, so accurary varies
+ */
+uint16_t WS2812FX::getFps() {
+ if (millis() - _lastShow > 2000) return 0;
+ return _cumulativeFps +1;
+}
+
/**
* Forces the next frame to be computed on all active segments.
*/
diff --git a/wled00/const.h b/wled00/const.h
index afc235af1..37adacc0f 100644
--- a/wled00/const.h
+++ b/wled00/const.h
@@ -16,7 +16,7 @@
#ifdef ESP8266
#define WLED_MAX_BUSSES 3
#else
-#define WLED_MAX_BUSSES 7
+#define WLED_MAX_BUSSES 10
#endif
//Usermod IDs
diff --git a/wled00/data/index.js b/wled00/data/index.js
index 15f6df5d1..563e6fb01 100644
--- a/wled00/data/index.js
+++ b/wled00/data/index.js
@@ -464,7 +464,7 @@ function populateInfo(i)
}
}
var vcn = "Kuuhaku";
- if (i.ver.startsWith("0.11.")) vcn = "Mirai";
+ if (i.ver.startsWith("0.12.")) vcn = "Hikari";
if (i.cn) vcn = i.cn;
cn += `v${i.ver} "${vcn}"