Commit Graph

4448 Commits

Author SHA1 Message Date
Will Tatam
75481d3251 Disable VirtualMatrixPanel, CHAIN_BOTTOM_LEFT_UP incomplete 2025-09-20 15:20:38 +01:00
copilot-swe-agent[bot]
7d6f47755c Fix HUB75 panel width not loading correctly in settings UI
Co-authored-by: netmindz <442066+netmindz@users.noreply.github.com>
2025-09-20 12:29:25 +00:00
Will Tatam
3a7de8275f
Merge pull request #3777 from netmindz/HUB75-AC
Add HUB75 support
2025-09-20 13:05:48 +01:00
Will Tatam
3410b785db
Merge pull request #4944 from wled/copilot/fix-4943
Add GitHub repository information to build and API response
2025-09-20 11:23:42 +01:00
Benjam Welker
762d4433d8
Add reverse checkmark for Twinklecat (#4728)
reverse slowly fades in random lights, and then instantly turns them off.
2025-09-20 10:58:37 +02:00
copilot-swe-agent[bot]
efeb791807 Implement GitHub repo extraction in build process
Co-authored-by: netmindz <442066+netmindz@users.noreply.github.com>
2025-09-19 10:30:36 +00:00
Blaž Kristan
b375c718b0
Merge pull request #4771 from wled/fix-4643
Fix for #4643 - Missing MQTT updates
2025-09-17 12:20:41 +02:00
Will Miles
b16fbafd83
Merge pull request #4890 from willmmiles/esp32-rmthi
Import RmtHI driver
2025-09-16 21:32:16 -04:00
Damian Schneider
76cb2e9988
Improvements to heap-memory and PSRAM handling (#4791)
* Improved heap and PSRAM handling

- Segment `allocateData()` uses more elaborate DRAM checking to reduce fragmentation and allow for larger setups to run on low heap
- Segment data allocation fails if minimum contiguous block size runs low to keep the UI working
- Increased `MAX_SEGMENT_DATA` to account for better segment data handling
- Memory allocation functions try to keep enough DRAM for segment data
- Added constant `PSRAM_THRESHOLD` to improve PSARM usage
- Increase MIN_HEAP_SIZE to reduce risk of breaking UI due to low memory for JSON response
- ESP32 makes use of IRAM (no 8bit access) for pixeluffers, freeing up to 50kB of RAM
- Fix to properly get available heap on all platforms: added function `getFreeHeapSize()`
- Bugfix for effects that divide by SEGLEN: don't run FX in service() if segment is not active
-Syntax fix in AR: calloc() uses (numelements, size) as arguments

* Added new functions for allocation and heap checking

- added `allocate_buffer()` function that can be used to allocate large buffers: takes parameters to set preferred ram location, including 32bit accessible RAM on ESP32. Returns null if heap runs low or switches to PSRAM
- getFreeHeapSize() and getContiguousFreeHeap() helper functions for all platforms to correctly report free useable heap
- updated some constants
- updated segment data allocation to free the data if it is large

- replaced "psramsafe" variable with it's #ifdef: BOARD_HAS_PSRAM and made accomodating changes
- added some compile-time checks to handle invalid env. definitions
- updated all allocation functions and some of the logic behind them
- added use of fast RTC-Memory where available
- increased MIN_HEAP_SIZE for all systems (improved stability in tests)
- updated memory calculation in web-UI to account for required segment buffer
- added UI alerts if buffer allocation fails
- made getUsedSegmentData() non-private (used in buffer alloc function)
- changed MAX_SEGMENT_DATA
- added more detailed memory log to DEBUG output
- added debug output to buffer alloc function
2025-09-16 19:46:16 +02:00
netmindz
a79ae25621
null check in setBrightness
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-09-13 14:10:04 +01:00
netmindz
011e72c3c1
Revert nPins = Bus::getNumberOfPins change
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-13 13:41:04 +01:00
netmindz
46e60b4d0a
Only read pinArray if initialized
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-09-13 11:08:35 +01:00
Damian Schneider
75f6de9dc2 bugfix in Colortwinkles
thx @blazoncek
2025-09-09 07:31:19 +02:00
Blaž Kristan
649d43b581 Bugfix for FX: Tri Fade
- incorrectly calculated counter and progress
2025-09-08 11:37:43 +02:00
Damian Schneider
385504e6db fix ancient UI bug that hides the speed slider in percent FX 2025-09-05 19:53:15 +02:00
Will Miles
a0321170d0
Merge pull request #4859 from Liliputech/udp_name_sync_rework
new usermod hooks "onUdpPacket"
2025-09-04 22:29:21 -04:00
Will Miles
9359f0b7fc Fix include style 2025-09-03 23:29:24 -04:00
Will Miles
be74196a62 Un-vendor AsyncMqttClient
Switch to the upstream version.  This fixes a memory leak when
re-connection fails.
2025-09-03 23:05:20 -04:00
copilot-swe-agent[bot]
72ad39d6a7 Fix 2D matrix generator preview update issue
Co-authored-by: DedeHai <6280424+DedeHai@users.noreply.github.com>
2025-09-03 17:51:00 +00:00
Damian Schneider
bc5d4fed3c remove early return from initconnection() 2025-09-02 19:46:02 +02:00
Damian Schneider
a037d99469 added debug output on crash, removed whitespaces 2025-09-01 22:22:16 +02:00
Damian Schneider
8cc5d64819
Merge pull request #4853 from willmmiles/bootloop-platform-simplification
Bootloop detection platform factoring
2025-09-01 22:17:07 +02:00
netmindz
4c948cca13
Merge pull request #4860 from tarontop/main
support iotorero ethernet controller
2025-09-01 10:03:54 +01:00
Aiden
5cb8dc3978 Delete the same define 2025-09-01 11:05:31 +08:00
Will Tatam
199bc45ae2 Merge branch 'main' into HUB75-AC 2025-08-31 12:53:25 +01:00
netmindz
8fc87aa17d
Merge pull request #4844 from Arcitec/0_16-fix-sync
Fix broken Sync button after 0.15 refactor
2025-08-31 12:30:19 +01:00
Will Miles
19a49e83d1 Import RmtHI driver
Pull the RMT High-priority Interrupt driver in to a vendored local
library, pending inclusion in upstream NeoPixelBus.

Driver is enabled only for XTensa chips; there's some unresolved
issue with nested interrupts on RISCV.
2025-08-30 15:57:04 -04:00
Damian Schneider
d5d7fde30f
use video scaling instead of NPB luminance & new ABL (#4798)
* updated color scaling to preserve hue at low brightness resulting in much better colors
* replace NPBlg with NPB, moved brightness scaling to bus manager
* improved gamma table calculation: fixed mismatch in inverting gamma table calculation: inversion should now be as good as it gets
* code cleanup, fixed gamma being applied in unnecessary places

Improvements to ABL handling:
- removed strip level handling, ist now all done on bus level
- limiter now respects pixel mapping
- proper handling of white channel
- improved current estimation
- current is now always correctly reported to UI
- minimal FPS impact if the ABL is not limiting but slighly higher impact for global ABL limit due to double-scaling

- moved brightness scaling to BusDigital
- created new header file colors.h to be able to access color functions in bus-manager.
- updated colo_fade() with better video scaling to preserve hue's at low brightness
- added IRAM_ATTR to color_fade (negligible speed impact when compared to inline and benefits other functions)
- added IRAM_ATTR to color_blend as it is used a lot throughout the code, did not test speed impact but adding it to color_fade made it almost on-par with an inlined function

Additional changes:
- fixes for properly handling `scaledBri()` (by @blazoncek)
- also use bit-shift instead of division in blending for ESP8266
- improvements for faster "softlight" calculation in blending
- changed some variables to uint8_t to maybe let the compiler optimize better, uint8_t can be faster if read, store and set are all done in uint8_t, which is the case in the ones I changed
- various minor code formatting changes
2025-08-29 17:12:10 +02:00
Will Miles
6f914d79b1 Increase boot loop timeout
Any repeating crash that prevents a human from logging in and fixing
the config should be treated as a boot loop.  Increase the detection
timeout, so anything that's fast enough to preclude a user fix will
trigger the recovery behaviour.
2025-08-28 21:17:12 -04:00
Will Miles
dd13c2df47 Reset crash counter after long interval
Don't treat consecutive but infrequent crashes as bootloops.  The
bootloop recovery actions only make sense when there is no opportunity
for a user to reconfigure their system.

Suggested by @coderabbitai
2025-08-28 21:10:39 -04:00
Damian Schneider
8aeb9e1abe bugfix in PS pointer alignment
- bug was leading to crashes when heap is low
2025-08-28 18:57:11 +02:00
Damian Schneider
cfad0b8a52
bugfix to prevent "almost infinite" loops in palette blend (#4841)
this fixes a very long loop when an overflow was happening in palette blending.
- reset prevPaletteBlends to prevent overflow
- add safety check in case overflow should still happen in another combination (or in future changes)
2025-08-28 18:08:31 +02:00
Will Miles
5fa901c37c Fix operation of length 1 strips, such as PWM LEDs
This reverts commit e5ba97bbe2.
2025-08-27 22:28:24 -04:00
Will Miles
46f3bc0ced Bootloop: Include soft wdt on ESP8266 2025-08-26 21:00:54 -04:00
Arthur Suzuki
f8ce5980a1
removed tabs and replace by space 2025-08-25 22:45:01 +02:00
Arthur Suzuki
4b5c3a396d
applied suggestions from review 2025-08-25 22:22:51 +02:00
Arthur Suzuki
550b4d9dea
fix comments for usermod hooks "onUdpPacket" 2025-08-24 15:54:45 +02:00
netmindz
2082b01a3c
Apply suggestions from code review
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-08-21 08:53:11 +01:00
Aiden
8baa6a4616 support iotorero ethernet controller 2025-08-21 12:51:48 +08:00
Arthur Suzuki
4de6656bc4
new usermod hooks "onUdpPacket"
this new hooks will help you implement new and custom protocols in
usermods.
I've provided an example (see usermods/udp_name_sync).
The example will help you share the main segment name across different
WLED instances.
The segment name can be useful to sync with some effects like GIF
image or scrolling text.

If you define new packet format in your usermod, make sure it will
either not collide with already used version of wled udp packet :
- 0 is for udp sync
- 1 is for AudioReactive data
- 2 is for udp_name_sync :)

Also, the onUdpPacket will override "parseNotification" if it returns "true".
Have fun!
2025-08-21 01:00:22 +02:00
Will Miles
85d4db83ed Isolate platform differences in bootloop check
Separate the platform-specific code from the logic, so any future
changes can be made in fewer places.
2025-08-20 11:32:32 -04:00
Will Miles
5146926723 Use direct references to RTC RAM on ESP8266
ESP8266 RTC RAM requires 32-bit accesses, but there's no need to jump
through a bunch of functions for it.  Use references to simplify access
and harmonize the implementation with ESP32.
2025-08-20 10:22:42 -04:00
Will Miles
3b5c6ca284
Fix bootloop if config is reset (#4852)
* Fix bootloop if config missing/reset

Can't reset the config if there's nothing to reset!

* ESP8266: Commit ACTIONT_TRACKER

* Use consistent naming for backups and reset cfgs

Use 'rst.cfg.json' instead of 'cfg.json.rst.json' for configs that were
reset.

* Add a little more PSTR to bootloop handling
2025-08-20 07:37:14 +02:00
Arcitec
7865985eeb Make version information consistent across update interfaces
The duplication of logic and the formatting differences between the "OTA Updates" and "Security & Updates" pages made it very difficult to find the exact version details.

With this change, both update-pages now share the same consistent and detailed formatting, making it easy for users to identify which exact version and binary of WLED they've installed.

The version format has also been improved to make it much easier to understand.
2025-08-17 22:45:20 +02:00
Arcitec
4ac7eb7eb2 Fix broken Sync button after 0.15 refactor
In the past, the "notify direct" flag controlled all network syncing, propagating all color changes to other devices on the network. Pressing the UI Sync button only toggled this flag, so "notify direct" was set to false by default.

In version 0.15, a separate "master" sync flag was introduced, and the UI Sync button now only activates this master flag. However, the rest of the flag defaults weren't configured to sync anything at all. As a result, users pressing Sync saw *no* syncing at all, leading to multiple bug reports.

Defaults are now user-friendly: Enabling Sync on a WLED device syncs all of *its* color changes, whether made via the UI, API or remote button, providing a consistent experience which matches the intended behavior from past WLED versions.

Philips Hue sync is now also disabled by default, making the stock defaults focused on WLED devices. Users with other RGB ecosystems can manually enable the Hue or Alexa syncing in the settings.
2025-08-17 18:12:22 +02:00
Damian Schneider
f4d89c4196 add IDF V3 support for bootloop detection 2025-08-16 08:45:41 +02:00
Damian Schneider
c9c442a933
Bootloop detection & recovery (#4793)
* added boot loop detection and config backup
* automatic OTA rollback if loading backup does not fix it
* added new file handling functions
* adding verification of json files, added config restore at bootup if broken
* added function to compare contents of two files for future use (currently not used)
2025-08-15 20:43:04 +02:00
TripleWhy
b8b59b2bb1
Make rainbow effects more colorful (#3681)
* Make color_wheel rotate in HSV sapce instead of linearly interpolating R->G->B
* Remove the rainbow wheel option, as that is the same as the rainbow palette
* Use hsv2rgb for color_wheel

This is the current result of the discussion in https://github.com/wled/WLED/pull/3681
2025-08-15 20:19:18 +02:00
Damian Schneider
e3653baf74
Segment fixes (#4811)
* Pulling in proper segment memory handling&fixes from @blazoncek dev branch
2025-08-07 21:11:10 +02:00
Blaž Kristan
93e011d403
Merge pull request #4769 from wled/fix-4671
Add mDNS support for MQTT server
2025-08-02 23:15:58 +02:00
Blaž Kristan
374d90629d
Merge pull request #4768 from wled/fix-4268
Add mDNS resolution for network bus
2025-08-02 23:12:23 +02:00
Blaž Kristan
bfe5cd52e7
Merge pull request #4748 from wled/aOTA
Revert disable OTA logic & optional Arduino OTA
2025-08-02 23:11:37 +02:00
Damian Schneider
b76ef231fc PS Bugfix: revert gamma correction for color, not brightness setting 2025-07-29 19:35:12 +02:00
netmindz
591dbe387c
Merge pull request #4780 from jasonsomers/main
Update settings_wifi.htm
2025-07-27 13:52:31 +01:00
Will Tatam
e5ba97bbe2 Prevent crash during blend if led init fails, https://github.com/wled/WLED/issues/4782 2025-07-27 13:15:42 +01:00
Damian Schneider
ab5b6f9b7d fix change that got lost 2025-07-24 18:30:51 +02:00
Damian Schneider
4fd1b393a8 Bugfix in Aurora FX and fixed compiler warning in PS Impact 2025-07-24 18:27:03 +02:00
Damian Schneider
e2f5becdd0
Bugfixes in FX data allocation (#4783)
- Bugfixes in FX data allocation: realloc was not handled properly.
- Added *intermediate* fix for waitForIt(), see https://github.com/wled/WLED/issues/4779
- Bugfix in 1D->2D expansions: corner-expansion MUST be boundary checked as it blindly writes the max dimension
- removed some realloc(), improving fragmentation on large setups
- increased min heap constant
- ESP32 C3 has no PSRAM, it now uses default alloc functions
- also added missing UI info for "Error 7"
2025-07-23 06:42:06 +02:00
Damian Schneider
71301ddc57
using segment buffer instead of local buffer for PS (#4776)
- using segment buffer instead of local buffer to save FX ram
- fix rendering if gamma correction is disabled
- some code cleanup
- Fix for low RAM: reduce number of particles dynamically
- updated add and scale color functions to not use references
- FPS is now more consistent and on average about 15% faster
2025-07-22 22:26:13 +02:00
Blaž Kristan
c30c7e1da5 Merge pull request #4763 from wled/fix-parallel-i2s-selection
Prevent parallel I2S use if different LED types are used.
2025-07-22 11:14:55 +02:00
Jason Somers
806163f1ed
Merge branch 'wled:main' into main 2025-07-17 22:13:01 -04:00
Blaž Kristan
ecc3eae247 Revert status message change 2025-07-16 11:18:04 +02:00
Blaž Kristan
07e303bcc1 Remove anything behind .local and ignore case 2025-07-15 13:37:45 +02:00
Blaž Kristan
24f2306129 Strip .local from mDNS resolution 2025-07-15 10:33:09 +02:00
Blaž Kristan
79b3bc2573 Add mDNS support for MQTT server
- fixes wled#4671
- reduce some topic string parsing
- moves LWT into onConnect
2025-07-12 19:04:21 +02:00
Blaž Kristan
5c74f0fa21 Fix wled#4643 2025-07-12 18:49:03 +02:00
Blaz Kristan
e7157e542a Add mDNS resolution for network bus 2025-07-12 18:44:38 +02:00
Blaž Kristan
a24420ae70 Fix #4268 2025-07-12 18:18:49 +02:00
Damian Schneider
b7bfd6fc67
Copy Segment FX (#4124)
* Added FX to copy a segment in 1D or 2D

- copies the source segment
- brightness of segment is relative to source segment
- optionally shifts the color hue, saturation and brightness
- invert, transpose, mirror work
- if source or targets do not match in size, smallest size is copied
- unused pixels fade to black (allows overlapping segments)
- if invalid source ID is set, segment just fades to black
- added a rgb2hsv conversion function as the fastled variant is inaccurate and buggy
- 1D to 2D and vice versa are supported
2025-07-12 07:40:18 +02:00
Will Miles
9569ec7ccf bus_wrapper: Update comments to reflect RMT usage 2025-07-09 16:28:22 -04:00
Will Miles
61990189de bus_wrapper: Use parallel I2S first when enabled 2025-07-09 10:31:00 -04:00
Will Miles
c0875b36bb
Merge pull request #4712 from willmmiles/2d-expansion-fadeout-fix
Fix Segment::fade_out for 2d expansion
2025-07-09 09:11:27 -04:00
Blaž Kristan
929a5a8d80 Fix for wled#4759 2025-07-08 13:28:24 +02:00
Will Tatam
127c700a99 Define starting heap with lastHeap 2025-07-06 16:22:44 +01:00
Will Tatam
a67a2cbf5c Remove duplicate (de)allocateMultiplePins 2025-07-06 16:22:44 +01:00
Will Tatam
f9a6a3d36f Return if pinallocation fails 2025-07-06 16:22:44 +01:00
Blaž Kristan
9c38843747 Fix color conversion bug for parallel I2S output
- fixes wled#4719
2025-07-06 16:22:44 +01:00
Christian Dahmen
600603149e Fixed DNRGBW 2025-07-06 16:22:44 +01:00
Blaž Kristan
2b42049998 PICO-V3 detection
- requires V4 environment
2025-07-06 16:22:44 +01:00
Blaž Kristan
5f70fe57e3 Fix for #4752 2025-07-06 16:22:44 +01:00
Damian Schneider
6b6d26b8f0 enhancement & bugfixes in scrolling text (#4742)
* enhancement & bugfixes in scrolling text

- function now evaluates full string: allows custom text plus multiple tokens in any order
- fixed evaluation order to prevent early exit(s)
- fixed day strings (argument must be weekday() )
2025-07-06 16:22:44 +01:00
Blaž Kristan
62c87e206e Fix comment
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-07-06 16:22:44 +01:00
Blaz Kristan
4905cdd2e3 Optimise CCT buffer 2025-07-06 16:22:44 +01:00
Blaz Kristan
ce3f88428e Tackle CCT issue caused by segment blending
- wled#4734
2025-07-06 16:22:44 +01:00
Blaz Kristan
74644aa4a7 Fix #4747 2025-07-06 16:22:44 +01:00
Blaž Kristan
2ccb7312d0 Compile fix 2025-07-06 16:22:44 +01:00
Blaž Kristan
bd7735af3d Securing OTA update
- prevent settings change if not using private IP address or same subnet
- prevent OTA from differnet subnet if PIN is not set
- ability to revert firmware
2025-07-06 16:22:44 +01:00
ingDIY
ea86973548 WLED_DISABLE_2D does not compile (#4736)
the compilation fails with tons of errors if you try to compile using WLED_DISABLE_2D 
"message": "enclosing class of constexpr non-static member function 'bool Segment::is2D() const' is not a literal type",
"LineNumber": 766,
2025-07-06 16:22:44 +01:00
Damian Schneider
9eb0c3c8e5 Bugfix: convert cctBlend value back to "%" for UI (#4737)
* Bugfix: convert cctBlend value back to "%" for UI
2025-07-06 16:22:44 +01:00
Damian Schneider
f20b4c9e81 fix for https://github.com/wled/WLED/issues/4488 (#4692)
virtual strip index is added even if strip is 1D. this change fixes FX using virtual strips not working when WLED_DISABLE_2D is used.
2025-07-06 16:22:43 +01:00
Blaž Kristan
d7d1e929fe Fix color conversion bug for parallel I2S output
- fixes wled#4719
2025-07-05 22:32:44 +02:00
netmindz
2c1cf87e08
Merge pull request #4499 from Christanoid/main
Fixed UDP Realtime streaming in DNRGBW Mode
2025-07-03 00:30:27 +01:00
Blaž Kristan
e6716fe834 PICO-V3 detection
- requires V4 environment
2025-07-01 10:22:49 +02:00
Blaž Kristan
fc0d64ec78 Fix for #4752 2025-07-01 10:17:17 +02:00
Damian Schneider
cc81cc27b0
enhancement & bugfixes in scrolling text (#4742)
* enhancement & bugfixes in scrolling text

- function now evaluates full string: allows custom text plus multiple tokens in any order
- fixed evaluation order to prevent early exit(s)
- fixed day strings (argument must be weekday() )
2025-06-28 09:42:52 +02:00
Blaz Kristan
6a5dcb3a76 More OTA UI tweaks 2025-06-26 15:46:23 +02:00
Blaz Kristan
796494e925 Tweaks in OTA UI
- added OTA section toggle
- added ignore upload
- fix for missing "NoXXX" ID
- rely on 404 for /dmxmap
2025-06-26 11:41:03 +02:00
Blaz Kristan
7973fd84f1 Revert disable OTA & optional Arduino OTA
- new compile flag WLED_ENABLE_AOTA
- modify WLED_CONNECTED macro
- bugfix in Network isConnected() when static IP is set
2025-06-25 11:23:13 +02:00
Blaž Kristan
66869f8341
Merge pull request #4744 from wled/CCT-fix
CCT fix
May require some additional optimisations in the future to reduce unnecessary memory allocations (i.e. mixed CCT and non CCT buses).
2025-06-24 11:15:16 +02:00
Blaž Kristan
10d1098403
Fix comment
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-06-24 11:08:10 +02:00
Blaz Kristan
a041fd1266 Fix #4747 2025-06-24 11:00:04 +02:00
Blaz Kristan
e2fd1559d2 Optimise CCT buffer 2025-06-20 20:53:41 +02:00
Blaz Kristan
9dbd5f89b6 Tackle CCT issue caused by segment blending
- wled#4734
2025-06-20 20:53:24 +02:00
Blaž Kristan
0f00c95aba
Merge pull request #4700 from wled/secure-ota
Securing OTA update
2025-06-20 20:05:11 +02:00
ingDIY
3f03cb4d2b
WLED_DISABLE_2D does not compile (#4736)
the compilation fails with tons of errors if you try to compile using WLED_DISABLE_2D 
"message": "enclosing class of constexpr non-static member function 'bool Segment::is2D() const' is not a literal type",
"LineNumber": 766,
2025-06-20 15:42:23 +02:00
Damian Schneider
05557ca790
Bugfix: convert cctBlend value back to "%" for UI (#4737)
* Bugfix: convert cctBlend value back to "%" for UI
2025-06-20 10:55:53 +02:00
Damian Schneider
a53baa9b42
fix for https://github.com/wled/WLED/issues/4488 (#4692)
virtual strip index is added even if strip is 1D. this change fixes FX using virtual strips not working when WLED_DISABLE_2D is used.
2025-06-19 16:56:52 +02:00
Will Tatam
3dc45b80ba Fix b pin for Default pins 2025-06-16 22:27:42 +01:00
Will Tatam
fb469d7b24 esp32S3_PSRAM_HUB75 2025-06-16 21:29:19 +01:00
Will Tatam
edf6cb146d Merge branch 'HUB75-AC' of github.com:netmindz/WLED into HUB75-AC 2025-06-16 20:08:23 +01:00
Will Tatam
009950e28f Update Hug75 to reflect changes in 0.16 2025-06-16 20:04:07 +01:00
Will Tatam
8ee12620f0 Merge branch 'main' into HUB75-AC 2025-06-16 20:03:34 +01:00
netmindz
65edc50563
Update wled.h 2025-06-16 17:37:42 +01:00
Will Miles
3a413a59ba
Merge pull request #4713 from willmmiles/parallel-i2s-ui-missing
Update crude parallel I2S detection
2025-06-14 15:25:18 -04:00
Will Miles
16a88775c3 Revert changes to blur()
No need to rely on a sufficiently smart compiler.
2025-06-14 15:21:12 -04:00
netmindz
728b1e8ad4
Merge pull request #4723 from DedeHai/Flow_Stripe_FX_fix
Fixed "Flow Stripe" FX and added palette support
2025-06-14 20:20:30 +01:00
Damian Schneider
05f0630b9c
add inverse gamma 32 function and fix colors in pride (#4722)
* add inverse gamma 32 function and fix for colors in pride
2025-06-11 08:30:25 +02:00
Damian Schneider
ea231cbea8 Fixed "Flow Stripe" FX and added palette support 2025-06-10 19:29:53 +02:00
Will Miles
94f226aadf Fix additional mapping expansion locations 2025-06-09 12:15:36 -04:00
Damian Schneider
00d1fcc5fb
bugfixes: grouping and missing libArchive (#4718) 2025-06-09 17:41:53 +02:00
Damian Schneider
caeda96fbd
PS bugfix: do not increase saturation of palette colors (#4715)
this fix prevents palette colors being saturated more if high (but not full) saturation value is set for a particle
2025-06-08 13:03:21 +02:00
Damian Schneider
9805ae59d5
PS Fire: added sparks for better looks (#4714)
also added some smear-blurring if "smooth" (motion blur) is not used
2025-06-08 13:02:44 +02:00
Damian Schneider
00eb4068b0
add pre-applied gamma to c3g & fastled palettes to match original look (#4711) 2025-06-08 13:01:52 +02:00
mryndzionek
fc7d4dfcb0
Added new "effect usermod"
- Added new effect - Diffusion Fire
- UM is intended as a base / tutorial (work in progress)
2025-06-08 10:52:58 +02:00
Will Miles
ab28b6d58f Update crude parallel I2S detection
My ESP32s are now reporting a maximum of 32 buses.
2025-06-07 12:03:48 -04:00
Will Miles
4abaf13598 Fix Segment::fade_out for 2d expansion
Since we're using get/setPixelColorRaw, we need the true length, not
the virtual length.
2025-06-07 11:08:11 -04:00
Damian Schneider
8b65d873b3
fix particle brightness distribution with new gamma correction (#4710)
Particle System depends on linear brightness distribution, gamma corrected values are non-linear.
- added invers gamma table
- reversing gamma after brightness distribution makes it linear once again
2025-06-07 13:15:45 +02:00
Damian Schneider
a87b562bc2
update to distortionwave FX (#4693)
- fixed "jumpyness" by improving offset calculation resolution
- added palette support
- added two rendering modes for use with palette: one uses hue-mapping, one uses brightness mapping
- added alternate animation mode (from initial source)
- extended scaling: zoom checkmark (depends on matrix size)
2025-06-06 17:05:16 +02:00
Blaž Kristan
23a51e0982
Merge pull request #4658 from wled/layers
Segment layers and better effect transitions (blending)
2025-06-01 12:28:11 +02:00
Will Miles
4a3af814bf
Merge pull request #4669 from willmmiles/4597-usermods-not-building
Correct issues with usermods not being linked.
- Explicitly set libArchive: false in usermod library.json files
- Fix up symlink path generation on Windows
- Add validation script to report usermod linkage in resulting binary
2025-05-26 22:41:45 -04:00
netmindz
db22936153
Merge pull request #4698 from zuckschwerdt/fix-initmqtttwice
Fix running initMqtt twice on bootup
2025-05-26 20:42:02 +00:00
Blaž Kristan
a147f4120c Compile fix 2025-05-26 18:19:54 +02:00
Blaž Kristan
dcd3e07273 Securing OTA update
- prevent settings change if not using private IP address or same subnet
- prevent OTA from differnet subnet if PIN is not set
- ability to revert firmware
2025-05-26 18:00:45 +02:00
netmindz
f26733cd8c
Merge pull request #4697 from zuckschwerdt/fix-mqttlwtonce
Change to set LWT only once
2025-05-26 12:00:15 +00:00
Blaž Kristan
aa28769e71
Merge pull request #4652 from wled/disable-ota
Only disable Arduino OTA when using -D WLED_DISABLE_OTA
2025-05-24 21:27:08 +02:00
Christian W. Zuckschwerdt
c693f63244 Fix running initMqtt twice on bootup 2025-05-22 14:14:39 +02:00
Christian W. Zuckschwerdt
817157bbc1 Change to set LWT only once 2025-05-22 11:19:52 +02:00
Will Miles
24ab2952ee Add unambiguous usermod list to info
Neither the info panel nor the settings dialog can be trusted to
accurately report the usermod list:
- Not all usermods necessarily add to the info panel
- Not all usermods necessarily add to the config page
- #4609 is required for the config page to be correct

Add a short list to the info object that lists the loaded usermod IDs.
This is not displayed via the UI, but can be queried with curl or web
debug tools.

To be removed when usermod loading is working well.
2025-05-19 17:30:40 -04:00
Damian Schneider
25223c446f
fixed bouncing bug (#4694) 2025-05-19 20:48:00 +02:00
Damian Schneider
66ad27ad3a
add support for up to 10 ESPNow remotes (#4654)
* add support for up to 10 ESPNow remotes

* removed debug line

* changed todo comment

* fixed some issues, shortened html/java code

- reverting name to `linked_remote`
- ESPNow remote list is now hidden if unchecked
- shortened java script function names and variables to save flash
- removed now obsolete settings in xml.cpp
- correct checking of valid hex string for remote list in java script

* fixed indentation, using emplace_back instead of push_back, using JsonVariant, replaced buttons with +/-

* shortened java code

* updated java code, fixed bug

- element is now properly removed
- `+` button is hidden if list is full
- user needs to remove a remote, then reload the page to add it (workaround for edge case that needs more code to handle otherwise)

* add limit

* clearer usage description
2025-05-19 20:34:27 +02:00
Damian Schneider
d9ad4ec743
improved & refactored Android FX (#4522)
- returns FRAMETIME -> no more flickering in transitions and overlay
- no more double-painting of pixels
2025-05-19 19:50:48 +02:00
Damian Schneider
608aff1e17 slight speed improvement, fixed indentation 2025-05-10 09:11:07 +02:00
Damian Schneider
5fe766399b comment 2025-05-09 19:06:38 +02:00
Damian Schneider
891115ecee bugfix 2025-05-09 19:06:06 +02:00
Damian Schneider
0fe722e478 add new effect: PS Galaxy
- parameters tuned to make it look good on most settings
2025-05-09 18:53:16 +02:00
Damian Schneider
d9b086cbe9
Bugfixes in PS, improvements to PS Fireworks 1D (#4673)
- fixed inconsitencies in size rendering
- fixed palette being wrapped in color by position and color by age modes
- Fixed bug in memory layout: for some unknown reason, if flags come before particles, last flag is sometimes overwritten, changing memory laout seems to fix that
- New color modes in PS Fireworks 1D:
 - custom3 slider < 16: lower saturation (check1: single color or multi-color explosions)
 - custom3 slider <= 23: full saturation (check1: single color or multi-color explosions)
 - custom3 slider > 23: color by speed (check 1 has not effect here)
 - custom slider = max: color by age or color by position (depends on check1)
2025-05-01 13:39:23 +02:00
Damian Schneider
f721efca1e
fixed wrong gravity setting, added option for no trail (#4665) 2025-04-28 21:12:27 +02:00
Blaž Kristan
125a21da75 Comment 2025-04-26 20:15:02 +02:00
Blaž Kristan
c934776f45 Address issues reported 2025-04-26 20:08:15 +02:00
Blaž Kristan
0f321bfb38 Compilation fixes 2025-04-23 18:38:34 +02:00
Damian Schneider
10b925acb7
bugfix in enumerating buttons and busses (#4657)
char value was changed from "55" to 'A' which is 65.
need to deduct 10 so the result is 'A' if index counter is 10.
2025-04-23 15:06:31 +02:00
Blaž Kristan
ee9ac947a1 Segment layering & effect blending improvements
- Photoshop-style segment/layer blending
- return of strip ABL
- remove global LED buffer in favour of segment-local buffer
- new effect blending modes/transitions
- custom palettes moved out of WS2812FX class
- increased limits (matrix size, LED RAM)
- added "rainbow"-mode colorwheel
- replaced palettes with gamma unmodified ones
- move gamma adjustment to last step before sending to LEDs
- Segment & WS2812FX class reorganisation (mutable members, reordered members, protected members)
2025-04-22 22:37:18 +02:00
Blaž Kristan
8baf0fdef7 Add UI logic to hide ArduinoOTA checkbox and remove configuration items 2025-04-20 11:44:26 +02:00
Damian Schneider
353868414a
Removed PS memory manager and some minor improvements (#4651)
* Removed memory manager from PS

- reverted all changes related to memory manager
- moved local buffer into effect data memory
- some RAM issues may occur on larger setups: tested on S3 it works fine up to 32x32 but runs into memory issues at 64x32

* fixed ifdef, improved readability, add optimize "o2" flags to improve speed

- added struct for x and y coordinates, thx to @blazoncek

* cleanup and minor improvements

- removed local buffer for ESP8266 in 1D system to save on RAM
- increased particle brightness in PS Impact
- minor tweak in collision binning (might improve speed)
- removed comments and some other unused stuff
- fixed a few compiler wranings

* fixed init sequence bug
2025-04-20 11:38:32 +02:00
Blaž Kristan
c661d8f5b7
Merge pull request #4627 from blazoncek/overlay-fix
Allow clock overlay to use LED beyond 255
2025-04-20 11:05:35 +02:00
Blaž Kristan
ca7d7d9369 Only disable Arduino OTA when using -D WLED_DISABLE_OTA
- since Update object is accessible even with ArduinoOTA disabled it should possible to use HTTP OTA regardless
- this saves about 12kB while still allowing OTA updates
- HTTP OTA updates can be blocked using PIN or OTA lock
2025-04-20 11:01:19 +02:00
Damian Schneider
02f14baad4
Updates to particle system (#4630)
* added Sonic Boom AR FX, some tweaks to Sonic Stream
* added white color option to Sonic Stream
* improvements to collisions (speed look-ahead)
* code prettified
* added "playful" mode to PS Chase plus some minor speed optimizations
* Adding new FX: PS Springy with many config options
2025-04-15 19:07:21 +02:00
netmindz
e979c58c98
Merge pull request #4609 from willmmiles/usermod-cfg-live
Use live cfg json instead of file for usermod settings page
2025-04-06 09:28:45 +00:00
Blaž Kristan
b941654a68 Allow clock overlay to use LED beyond 255 2025-03-29 23:39:47 +01:00
Damian Schneider
e76e9a3e1f
Merge pull request #4594 from DedeHai/perlin_noise
Adding perlin noise replacement for fastled functions
2025-03-26 07:40:40 +01:00
Jason Somers
cf391034da
Update settings_wifi.htm
Several of our controllers support the Ethernet module, so we figured it best to leave it as simply "RGB2Go" in the menu, as opposed to "RBG2Go" Tetra.
2025-03-25 13:54:06 -04:00
Will Miles
36cb1cad36 settings_um: Use live config
Use json/cfg for the usermod settings page.  Should fix issues
with outdated content when a new firmware is loaded.
2025-03-23 15:20:16 -04:00
Will Miles
22e2b6f3c5 Have json/cfg return live config
Rather than reading the file off disk, have the json/cfg endpoint
return the live config from system state data.  This can improve
UI behaviour as it can never be out of date or include values that
do not apply to the current firmware install.
2025-03-23 15:18:08 -04:00
Will Miles
9c8f8c645e Rename 'doSerializeConfig' to 'configNeedsWrite'
Clarify the name and usage of this flag, as the function name has
changed out from underneath it.
2025-03-23 15:16:52 -04:00
Will Miles
e21a09cec9 Separate FS write from serializeConfig
Break the actual JSON assembly apart from the file writing code.  This
permits calling it in other contexts, allowing us to pull the live
config data even if the filesystem is out of date.
2025-03-23 15:15:52 -04:00
Will Miles
a0d1a8cbc4 Use enum class for json endpoint subtypes
Part of the ongoing quest to migrate macro definitions to typed
language constructs.  This actually yields a small improvement in
code size, likely from the byte->int conversion.
2025-03-23 15:08:12 -04:00
netmindz
ed6efe4c9e
Merge pull request #4551 from Brandon502/PinwheelRework
Pinwheel Rework
2025-03-23 09:29:54 +00:00
Blaž Kristan
a70bfa0c89 Merge pull request #4596 from Dschogo/patch-1
Fix wipe effect smoothness
2025-03-16 10:58:02 +01:00
Damian Schneider
d2b7e474d6 add legacy defines for compatibility, reverted test changes in rotozoomer 2025-03-14 06:48:18 +01:00
Damian Schneider
494b72c287 Merge remote-tracking branch 'upstream/main' into perlin_noise 2025-03-12 20:15:40 +01:00
Damian Schneider
229e7b940f added ranges, removed unused code 2025-03-12 19:58:32 +01:00
Damian Schneider
95dcb03f6d updated scaling 2025-03-12 06:56:33 +01:00
Will Tatam
0ba80ce61e Merge branch 'main' into usermod-libs 2025-03-11 22:31:52 +00:00
Will Tatam
7c23872e03 Add dmxInput.isConnected() 2025-03-11 22:31:19 +00:00
netmindz
8bee304e4d
Merge pull request #4577 from DevJogger/main
Add apple-touch-icon Link Tag
2025-03-11 22:19:38 +00:00
Blaž Kristan
d7be9c9a66 Address issues reported 2025-03-10 07:12:45 +01:00
Blaž Kristan
2b666ab9f7 Merge branch 'master' into multifix 2025-03-08 12:59:15 +01:00
Damian Schneider
4ecc531998 updated scaling, improved hashing, updated rotozoomer to not use a buffer 2025-03-08 12:48:27 +01:00
Blaž Kristan
b908384ba2
Merge pull request #4307 from blazoncek/compile-pin
Compile time lock PIN definition
2025-03-08 12:44:10 +01:00
Damian Schneider
5e8073022b 3D works but needs finetuning to match old looks 2025-03-07 06:39:49 +01:00
Damian Schneider
9553425374 some speed improvements using better hash, scaling is still off...
needs a proper scaling analysis of all steps in all resolutions to minimize errors.
2025-03-04 07:55:41 +01:00
Damian Schneider
2012317bc9 initial version, basically working but repetitive patterns, work in progress 2025-03-03 06:57:16 +01:00
Will Miles
e00789f838 Merge remote-tracking branch 'upstream/main' into usermod-libs 2025-03-01 20:32:12 +00:00
DevJogger
c9b8789ea9 Reduce apple-touch-icon image size 2025-02-28 18:47:32 +00:00
Blaž Kristan
4271588ecd unique_ptr fix 2025-02-25 16:06:13 +01:00
Blaž Kristan
a5277ff4a0 Merge fix 2025-02-25 16:01:30 +01:00
Blaž Kristan
a66f5d660d Merge branch 'main' into unlimited-bus 2025-02-25 13:54:42 +01:00
Brandon502
80061e8d76 Pinwheel: Use sin/cos16_t 2025-02-24 21:51:49 -05:00
DevJogger
d07a057f04 Add an apple touch icon for better recognition on the home screen of Apple devices 2025-02-25 01:13:22 +00:00
Damian Schneider
73fc9ea54d
Merge pull request #4543 from DedeHai/soap-FX-optimization
Soap FX optimization
2025-02-22 08:43:01 +01:00
Blaž Kristan
dd80919ed6
Merge pull request #4429 from blazoncek/use-bssid
Add ability to enter desired BSSID
2025-02-19 13:46:49 +01:00
Blaž Kristan
d7103cd75c
Merge pull request #4262 from blazoncek/large-ledmap
Large ledmap support
2025-02-19 13:43:52 +01:00
Blaž Kristan
29beee367c Cherry-pick fix 2025-02-19 12:27:10 +01:00
Blaž Kristan
d22fe9227b Prevent push transition if effect stays the same 2025-02-19 11:56:37 +01:00
Blaž Kristan
6ea9535463 Avoid shadowing global col[] 2025-02-19 11:54:03 +01:00
Blaž Kristan
6e138e4f79 Clarify use of index counter 2025-02-19 11:52:14 +01:00
Blaž Kristan
d6453bb53d Use constant CALL_MODE_INIT 2025-02-19 11:47:55 +01:00
Blaž Kristan
9bfd34e6b2 Rework color_from_palette()
- respect paletteBlend
- bugfix in ColorFromPaletteWLED()
2025-02-19 11:47:13 +01:00
Blaž Kristan
7b13771cfe Bugfix in settings 2025-02-19 11:42:00 +01:00
Blaž Kristan
b70b222f80 Replace magic with cosntant 2025-02-19 11:39:48 +01:00
Blaž Kristan
2ffc8dd228 W Hex entry bugfix & optiisation 2025-02-19 11:36:48 +01:00
Blaž Kristan
08d12f9ee6 Shifting bugfix & size tuning in fade_out 2025-02-19 11:35:51 +01:00
Blaž Kristan
7ce96c190f Manual advance playlist 2025-02-19 11:34:29 +01:00
Blaž Kristan
409b4b1963 Clear spaced segment
- also wait for strip before updating segment
2025-02-19 11:32:21 +01:00
Blaž Kristan
05cd7d753e Bugfix for color_blend 2025-02-19 11:26:51 +01:00
Blaž Kristan
6dfbd07e86 retrun value fix 2025-02-19 11:21:17 +01:00
Blaž Kristan
7b56e53c47 Nested playlist 2025-02-19 11:19:59 +01:00
Blaž Kristan
a8cde3289a Minor speed & size tweaks
- new function fadeToSecondaryBy()
2025-02-19 11:13:52 +01:00
Blaž Kristan
f4e7202dd0 UI info 2025-02-19 11:12:12 +01:00
Damian Schneider
a2de3d33bf
intermediate fix for transition speedup (#4562)
- fixes FX speedup in fade transitions but its not a proper solution
2025-02-17 19:32:43 +01:00
Damian Schneider
46a3e3d353
Adding Particle System with many new FX (#4506)
* cleanup

* added collision handling back in

update from another commit that got lost

* reformat

* added latest version of functions

this somehow also got lost from an earlier commit

* Update platformio.ini

* updated particle box and firework effects

particle box now is more random in random mode (still a work in progress)
firework is now more configurable by sliders

* added preliminary functions and FX

* added particle attractor, added two new FX but still buggy

particle attractor animation does not work, somthing wrong with pointer allocation, it worked with static variables

* bugfixes, attracot now works

still unknown, why more than 256 particles are needed in memory allocation to not make it crash, but it works for now

* added angle emitter, added fireworks effect using it

* Added saturation to be set for each particle individually

at the expense of more ram usage, animations now have more options for color control (already used in fireworks now)

* bugfixes in impact animation

* added option to use fast color add, may improve performance a little

also fixed a bug in fire animation

* collision detection is now a function plus some improvements & fixes

* improved collision efficiency

improved efficiency for stackup (pushback), added code to correctly determine direction if particles meed (probably overkill but now its there)

* added fix for piling oscillations

untested, need to verify it works

* Improved collision handling (faster, less oscillations), changed variables to 32bit for faster calculation

32bit variables are faster on ESP32, so use them whenever a variable is used a lot, it saves one instruction per access.

* removed option for fastcolor add

it made very little difference in performance, but for ESP8266 it may matter so it is set permanently there. graphically the difference is also very small (sometimes a particle gets brighter or less saturated)

* Fixed some bugs in particle system, runs much smoother now

also tweaked some of the FX

* Bugfix in particle push, now piling is working again

particle pile-up did not work correctly, now fixed

* changed particle pile demo into waterfall plus some tweaks

* lots of bugfixes

* updated particle attractor animation parameters and added more user options to perlin noise

* removed TODOs

* added particle WrapUpdate function, added spray FX, some bugfixes

* fixed touch buttons for ESP32 S2 and S3

touch is implemented differently on S2 and S3, these changes make touch buttons work on S2 and S3

* some tuning for touch buttons on S2/S3

now better fits the default threshold value of 32

* updated rotating particle spray with more user options

* chaned rotating spray default parameters

* add todo

* Revert "some tuning for touch buttons on S2/S3"

This reverts commit d21ad8e7d1651a96f879d43ef1146a72a6ed8271.

* Revert "fixed touch buttons for ESP32 S2 and S3"

This reverts commit 09041551862361cd8c7444ca25403f5f96a9077b.

* removed comments, added comments

* cleanup

-removed wrap_update function, now integrated into move_update
-added more 'out of bounds' checking in fire functions, may speed it up a little

* cleanup session

-removed particle box 'rocking boat' (buggy) and replaced with random sloshing.
-removed comments
-changed some variables into 32bit for speed boost on ESP32
-added link to KB at the top of FX.cpp

* cleanup

removed / added comments

* added particle GEQ effect (untested)

* Particle GEQ fixes, it now actually works

* GEQ  FX parameter tuning

* added rotating GEQ, work in progress

-animation works but sliders are too sensitive. need to adjust the ranges

* FX update

- changed firework exhaust to low saturation
- updated rotating particle spray animation

* Cleanup & Bugfixes plus major improvements for ESP8266

-added particle reductions for ESP8266 for all FX
-Removed collisions from Particle Perlin Noise FX, slows things down and does not contribute to a better effect experience
-lots of optimizations for ESP8266, all FX now work (at least on 160MHz but still slow)
-Some bugfixes
-removed unused variables to make compiler happy

* Particle FX Rename, default parameter tuning, bugfix

-Now shorter names, 'PS' in front to filter the list
-Tuned default parameters to make them look better by default
-Bugfix in particle system (removed duplicate application of velocity)
-reduced PS fire RAM usage (less particles, less base flames, no noticeable difference)
-some variable renaming

* slight speed improvements in fire, like 1-2FPS

* Big update: lots of little fixes and big speed boost on fire animation

-fixed fire burning more on the left side
-fixed crash in particle attractor
-added many improvements for ESP8266
-improved particle rendering efficiency
-efficiency improvements in general
-changed the way fire is rendered, now more than 2x faster
-re-tuned fire to new rendering, also seperately tuned it for ESP8266
-changed all random8() to random16() as it runs faster on ESPs
-some reformating
-some renaming of effect stuff
-fine tuning on falling particle effect
-improvements to collision handling (faster and better)
-added a (temporary) function for speed tests, will be removed again

* bugfix

* updated PS Fireworks with many changes and fine-tuning of parameters

-removed spiral explosions
-added more versatility to circular explosions
-removed user selectable amount of rockets
-tuned explosion size of circular explosions to match random explosions (more or less, may need improvement)
-changed order of sliders in volcano animation

* put particle system in a class. work in progress.

another huge update to the particle system.
went through the whole code, rewrote many of the functions. many improvements over the previous code. fixed many bugs (and even an ancient one in rendering function). spent many hours optimizing the code for speed and usability.
still a work in progress, debugging is ongoing. more updates to come.

* many (many!) bugfixes, added fire FX back in (and improved it a lot) added local renderbuffer for huge speed boost

-lots of bugfixes in Particle system
-added local rendering buffer (renders to buffer in heap)
-added fast and accurate color-add function
-bugfixes in render function
-added improved 'sticky' particles in collision (unfinished business)
-added ballpit animation back
-lots of tweaks to fire FX and fire rendering functions, looks even better now (still unfinished)
-added palette render option to fire

still many debug print outputs around, needs cleanup at one point

* More Bugfixes, more converted FX

* more bugfixes, some animation tuning, added volcano back in

- fixed animation transitions with proper pointer setting in each FX call
- added color by age setting to particle system
- maybe fixed collision having a tendency to go to the left
- fixed bugs in fireworks FX
- added fire spread width as a slider
- changed max number of particles and sprays based on some ram calculations
- some other random fixes

* updated fire, added some functions to PS, ported attractor FX

- added turbulance to fire (after hours of fine-tuning) it now looks even more awesome
- added attractor animation back in and improved it with more functionality
- fixed the attractor function in the PS
- renamed FX: 'candy' is now called 'vortex'
- added new force function to apply a force immediately (and handle the timing in the FX)
- added update function to PS for size update to handle dynamic segment size change
- made waterfall width dynamic on segment width
- removed some debug stuff
- added #defines for maximum number of particles/sprays
- updated fire parameter to make it look better on ESP8266
- some little bugfixes

* another huge update, many improvements, fine-tune collision, fire and some other FX

-removed classic fire render as palette now looks much better
-tweaked fire parameters to more awesome
-added (optional) turbulence to fire using perlin-noise
-ported spray FX to use PS-class
-now definitely fixed asymmetrical collision issue: do not use bitshifts on negative numbers!
-changed piling behaviour of particles, full rework. looks way more natural now and works much better
-changed bouncing behavour: they now bounce at full diameter, making them stay fully in frame when laying on the floor
-replaced all relevant bitshifts with divisions for higher accuracy throughout the PS
-added new modes to particle box FX
-changed a lot of FX parameters (finetuning)
-changed all config strings to proper settings (matrix only)
-fixed newly introduced bugs
-added speedup/slowdown to vortex FX (aka candy, aka rotating sprays)
-some renaming
-fixed bugs… lots of bugs
-merged rendering functions, removed obsolete stuff

* Fixed Speed limit

limiting speed was incorrect, leading to overflows. fixed this.
also fixed bugs in GEQ, removed some debug stuff, added FPS limit to fire (just en experiment)

* work in progress, added motion blur and line attracto (non working)

* work in progress, added test function to increase particle size, also added wobbling test

* added more tests, non compiling at the moment

* in the middle of fixing FX to use new PS functions

* debugging going on

* bugfix in wrap function and firwork FX

* added local render blurring, boosting FPS, work in progress

- changed fast-add function to use pointers
- added fast-scaling function
- added simple (but fast) 2D blurring function
test shows that local blurring of full frame is almost double the speed (40FPS now is 80FPS).
lots of comments still there

* Bugfixes, improvements and added wall roughness setting

- fixed bug in PS fuzzy noise which made it asymmetric for some reason, seems to work better now
- added particle size option to attractor but had to remove speed setting (now fixed emit speed)
- some parameter tuning of FX
- improvements to code size in render function
- added smear option to blurring (not tested much, may be buggy without smear)
- speed improvement to caldForce_dv, added zero checking.

* removed zero inits

- removed zero initialisations in FX, segment.data is set to zero by alloc function

* added individual size particle rendering plus some fixes

- advanced particles can now be rendered to individual sizes. It is computationally intensive but it works well for up to 15 very large particles and more smaller ones
- added collision handling for individual sizes (walls and collisions)
- fixed bugs in particlebox
- fixed fire not transitioning properly (flickering) when frame skip is active
- removed 'wraparound' function as it can easily be done by casting to an unsigned and then modulo
- fixed ballpit particles wandering left and right very fast if wrapX is set

* Fixed some nasty memory bugs, fixed some FX parameters

- fixed memory alignment bug in PS pointer assignment by making sure only multiples of 4 are allowed for particles and sources
- added saturation back to particle struct, as it was aligned to 10 bytes anyway.
- fixed a bug where a null pointer could be accessed
- fixed rendering out of frame particles if buffer allocation failed
- improvements on ESP8266

* Replaced Ghost Rider FX with PS version

- new FX is kept close to original animation but added more user settings

* added walls to ghostride, fixed some bugs

* added 'perpetual' flag to particles

* Fixed another memory / pointer bug, but there is still one left...

-also some minor fixes

* Found and fixed crashes, it was wrongly assigned pointers

* Added advanced particle size control and new Blob FX

- advanced size control allows for growing, shrinking, wobbling
- render function updated to support asymmetric rendering
- various code improvements and bugfixes
- some FX parameter tuning
- bugfix: removed sli() sei() calls in render function that caused random flickering on S3/C3 (may add that back in but only for ESP8266 to reduce fragmentation)
- removed some debug / test stuff

* code cleanup, removed some unused stuff

* bugfix, sprayEmit() would not return and get stuck

- forgot default return value...

* remove esp_random() as it is not supported on ESP8266

* small bugfix for ESP32, cleanup / reformatting

* added WLED_DISABLE_PARTICLESYSTEM option, fixed volcano movement

use '-D WLED_DISABLE_PARTICLESYSTEM' to disable compiling

* a line got lost in the last commit

* - added WLED_DISABLE_PARTICLESYSTEM option & cleanup & bugfixes

- cleanup / reformatting
- fixed volcano movement
- small bugfix for ESP32 (random() does not work, using random16() )

* Added PS source option to emit more than one particle, addes AR to Blobs and Spray

* added center GEQ back in, changed AR behaviour of spray a little

center GEQ is a mix between the PS equalizer and vortex, tuned for AR. some more tuning may be needed, it can probably be extended and improved a little.

* Bugfix and minor improvements

- fixed bug in center GEQ
- added '2D washing machine' mode for particle box
- improved color-change rate in ghostrider
- added AR to attractor (experimental, may remove again)

* hacked in a 1D port of the 2D PS, untested code

* fixed first bugs in 1D system, added test FX

* fixed bug in wrapping (also was wrong for 2D system)

* fixed collisions, added bouncing ball replacement (work in progress)

* replaced more FX, some tweaks to 1D PS

- changed virtual particle size from 64 to 32, making them able to move faster
- added 'rolling balls' option to bouncing balls (i.e. no gravity plus some tweaks)
- added dancing shadows with PS (work in progress)
- temporarily removed native FX: bouncing balls, rolling balls, popcorn, dancing shadows
-and of course some bugfixes

* updated dancing shadows to more closely mimic original

* added drip FX, added #ifdefs, removed some common functions

#ifdefs to individually disable 1D and 2D system.

* fixed compile issue, removed replaced FX (again)

* added Fireworks1D replacement (unfinished)

also fixed a bug in `applyForce()` using uninitialized variable.

* added sparkler and hourglass (both work in progress) tried fixing 1D collisions

* many improvements in 1D collisions (fine tuned), hour glass FX is almost done

spent A LOT of time in fine-tuning collisions for best stacking without collipsing, ringing, oscillations or particle flips. still not perfect but probably as good as it can be with the limited time-resolution

* many bugfixes in PS and FX

* minor FX adjustments

* Improved 1D collisions, added 2 new 1D FX (work in progress)

* bugfixes

* added 'color by position' as a PS setting

 -made settings struct for 1D and 2D version to be different
 -added setting 'color by position' as that is used by multiple FX now

* added large size rendering to 1D PS, work in progress

* bugfix (forgot to free memory)

also: made random size a permanent option in 1D fireworks as it looks kind of cool

* Added PS based Chase, fixed some bugs

* minor update

* two new FX: Starburst and 1D GEQ

* Added more advanced (and proper) size handling in collisions, work in progress

 - copied and adapted some stuff from 2D system (out of bounds size rendering, dynamic collision detection distance, dynamic wall bounce distance)

* fixed some parameters in 1D FX

* added #ifndef to disable FX replaced by PS

- define DISABLE_1D_PS_REPLACEMENTS or DISABLE_2D_PS_REPLACEMENTS

* bugfixes

* default parameter change

* explicit cast to fix compile error

* Bugfixes

* added color-waves to PS chase, some parameter tuning plus bugfixes

* FX update and bugfixes

- fixed wall collisions on larger particle sizes
- update to bouncing balls:
 - added size setting
 - added proper updating on parameter change
 - bugfixes
added support for 'colorwaves' and 'pride' to PS Chase to save on code size. currently broken...

* minor update to rolling balls, fixed stuff in Chase, pride option still not working

* update on 'pride' now working again but needs finetuning

* SEGMENT -> SEGENV on data, aux0, aux1, step

also removed debug outputs

* added pride and colorwaves to 1D replacement list

* removed unused variables

* added variable to set number of particles if not all are required (saves ram) also fixed a nasty render bug

* added preliminary 1D fire function, unfinished

* added fractal FX test, fixed bugs in emit function

* tweaked 1D fire a little, still work in progress

* minor tuning on 1D fire to avoid 'oscillation' at start

* improved 1D particle fire, much more natural now.

* updated 2D fire, fixed init bug

- source init was wrong making fire init weirdly
- changed parameters on 2D fire making it look better and improving flame height for larger setups

* fixed 'nervours' fire

* slight improvements and some cleanup

* removed douplicate code for fire emit (tradeoff for some speed), removed unfinished fractal FX

- with the duplicate code removed, the fire particle emits are a bit slower but it saves on code. it is not really noticeable, its slower by about 1FPS

* Re-license from MIT to EUPL

* Started cleanup, speed improvement to rendering, renamed class

- removed 'smar' parameter in blur functions as smear is always used
- improved particle rendering (passing by reference, passing wrap parameters for faster access)
- renamed class to ParticleSystem2D
- removed some whitespaces
- some reformating, removed some comments
- minor tweaks
- removed non-working line-attractor function

* Optimization and bugfixes

- added out of bounds checking function
- fixed rendering at boundaries
- various small changes and cleanup
- bugfixes with comparing ints of different signeness
- fixed bounce radius

* Cleanup, bugfixes, speed improvements, refactoring

- lots of code refactoring / reformating
- fixed bug in fire particle update and improved speed a bit
- refactoring of pixel rendering
- removed 2D buffers, replaced with 1D buffer for faster access
- bugfix in blur2D
- many small improvements to 2D system

* Refactoring and cleanup of 1D PS, removed debug printouts

- code reformating for consistency and readability
- replaced "'?" operator with min / max (produces the same code, more readable)
- minor changes for speed (random16 used, can later be replaced with hardware random function)
- renamed PS Equalizer to PS 2D GEQ

* Cleanup and some refactoring of particle FX

- moved 2D / length check to PS initi
- code reformating
- removed some comments

* missed a spot

* minor tweaks to fast_color_add()

* Work in progress: update to fireworks, needs more testing & finetuning

also bugs fixed and some minor cleanup

* Work in Progress: added particle memory manager for transitions

- uses only one, persistant buffer to render all present particle systems
- Buffer for particles is shared for one segment (may allow interacitng systems in the future)
- updated some of the FX to handle the new transfer, 1D FX still not done
- updated parameters for particle impact FX

* work in progress: lots of changes & fixes, transitions now work correctly in 2D

- still fragile code with lots of cleanup to do

* added transitions for big-size rendering

- transitions now work with FX that use global large size rendering. this is done by handling the buffer correctly. to avoid creating a second buffer, it is transferred back and forth to the segment. this is a bit slow but a compromise solution.
- multiple segment handling is still untested

* speed improvement to  fast_color_add, added preliminary buffer transfer function

* merge fixes

* bugfix in setCurrentPalette, corrected order of 2D memory allocation, increased max particles/sources

- fixed timing for vortex

* fixed particle buffer handover, added 2D blur option, increased particle limits, various fixes

- fixed bug in memory watchdog, now works and also works when freezing segments
- fixed PS Box to work again with particle handover
- added smear blurring to waterfall
- added smear blurring to vortex, fixed color distribution, removed random color distribution option
- replaced all random() calls with hw_random()
- transitions now work but only if FX transitions are enabled and not when chaning segment size

* implemented correct 1D<->2D buffer handover+bugfixes

work in progress

* added smear to fuzzy noise, some cleanup

* added blurring option to PS 2D fireworks, work in progress in finding that nasty bug that crashes all

* BUGFIX: finally found and squased the memory bug, no more random crashes

also: removed debug outputs and minor cleanup

* minor cleanup and fixed a bug

1D system had a lot of crashes, some out of bounds memory issue. fixed it but I have no idea which change did that, maybe the order in 1D initialization

* BUGFIX: out of bounds checking was wrong, leading to crashes

* better handling of used particles in transitions

for FX that do not use all particles, transitions were constantly shifting the pointer, resulting in newly generated particles and weird particle flickering, this is not fixed by keeping the pointer constant once the number of used particles is reached.

* improved particle transition for low-count FX, updated 1D FX

now most 1D FX work again, still needs some fine-tuning

* Rework on Fireworks 1D, some minor fixes

- fireworks 1D now matches as closely as possible to the old FX
still not identical but as good as it gets.

* bugfix in PS Chase, increased brightness of 1D fireworks

* replaced sin16/cos16 with new versions

* bugfixes

* fixed hourglass init, rearranged PS FX init

* speed optimization

- moved out of bounds calculation to proper spot
- removed repeated allocation attempts if initial buffer alloc fails

* Added Sonic Stream FX, some cleanup, bugfix in emitter

* changed TTL to brightness calculation, added collision binning

- brightness is now doubled as some FX were really dim due to low TTL
- added binning in x-direction giving a huge speed advantage on larger matrix sizes

* collision binning bugfix, made particles less sticky, update to waterfall

- updated waterfall intensity and blurring

* WIP: fixed 1D system for over 1000 pixels, added collision binning for 1D

- making x coordinate 32bit allows for larger strips but uses a lot of ram due to struct memory alignment (12bytes instead of 8 bytes), this needs some more work to properly fix.
- adding collision binning significantly speeds things up, about a factor of 2 on most FX using collision
- there are still some bugs in FX or 1D memory handling (or both) on large setups

* moved particle flags to seperate array to save on RAM, refactoring

- moving the flags optimizes ram alignment, saving memory for each particle
- changed lots of parameters to `const`
- moved fire intensity to a variable instead of passing it to every render() call
- changed passing pointers to passing reference where possible
- saves a total of 340 bytes of flash

* removed todos after some checks, minor improvements

* inverted y axis in 2D render, 1D collision improvements, cleanup and fixes

- inverting the y-axis in the buffer instead of in buffer transfer fixes the FX flipping when transitiononing 1D<->2D
- improved particle binning for collisions
- added hard-pushing also when not using gravity so piles close to an edge dont collapse
- some improvments to "balance" FX
- renaming and cleanup

* FX fixes and minor tweaks

* increased min rockets

* fixed #ifdefs

* another fix

* revert unnecessary changes to base code

* merge fix

* minor tweak

* tweaked sparkler FX, some cleanup

* Fix in volcano FX, changed blurring of volcano and waterfall

* added ifdefs

* minor tweaks, increased 1D minsurfacehardness

* improved sparkler FX, made overlay possible (1D not yet), cleanup

* cleanup, now using new hsv2rgb/rgb2hsv, add overlay rendering to 1D

- new hsv2rgb is a tiny bit faster
- removed redundant code (using transferBuffer instead)
- tweked parameters in vortex, removed unneeded slider defaults

* fix for non or partially overlapping segments

- can not use overlay rendering if no segment clears the buffer, it will all add up to white eventually
- now additive transfer i.e. overlay mode is only activated if the segment is fully overlapping an underlying segment

* change got lost...

* increased sparkler intensity, some cleanup

* replaced #ifdefs, removed 1D replacements that have 2D version, removed notes

* cleanup, improvements to PS bouncing ball, replaced multicomet

- bouncing balls is now named pinball and has settings/parameters updated to be a replacement for multicomet

* cleanup, improvements, bugfixes

- large size rendering now works without framebuffer
- background adding is now done on buffer (if avilable) instead of segment
- fixed overflow bug in 2D large particle rendering (it worked only for powers of 2 size)

* potential bugfix, compiler warning fix

* removed colorwaves and pride option from chase (not worthy replacements)

* updated #defines, removed PS from 1M and 2M builds

* Adding Particle System and PS FX

Adding all 187 commits from particle system dev branch

* reverted some accidental changes

* reverted some accidental changes

* merge fixes

* changed replacement: multicomet instead of comet (lighthouse)

* changed replacement: multicomet instead of comet (lighthouse)

* disable 2D PS for ESP8266, some cleanup, improved pinball FX parameters, bugfixes

* Improved collision binning for large particles, improved pinball FX

* improved speed handling in pinball FX - rolling

* disable 2D PS for ESP8266, some cleanup, improved pinball FX parameters, bugfixes

* improved hourglass: millis instead of frame timing, better stacking. and cleanup.

* revert whitespaces

* simplified 1D collisions, improved binning for larger particles

- ran a lot of experiments with collisions in 1D, the new much simpler approach seems to be a good compromise with regards to stacking and normal collisions.

* Improved collision binning for large particles, improved pinball FX

* improved speed handling in pinball FX - rolling

* improved hourglass: millis instead of frame timing, better stacking. and cleanup.

* revert whitespaces

* prohibit use of 1D and 2D system simultaneously on ESP8266

* prohibit use of 1D and 2D system simultaneously on ESP8266

* update to handle blending styles

* fixed bugs, improved new transition handling

* updated 1D system to work with new transitions, replaced NULL with nullptr

* merge fixes

* added single pixel particle rendering for 2D system, adjusted FX to work with it

* improved collisions in 1D and 2D, some bugfixes in radius calculation, minor tweaks

- collisions are now also velocity based in 1D, there was a bug that prevented that from working well (wrong collision distance calculation)
- improvement and bugfix in 2D collision distance calculation
- added distance based pushing in 2D (instead of only using the dotproduct)
the combination of improved distance calculation and proper pushing make collisions a lot better in all tested FX

* minor fix

* fixed overlay detection, checking for partial overlay

if a PS FX is partially overlapping, it will render in overlay mode

* better blur range in PS Firworks

* minor code consolidation

* updated 1D collisions (yet again), improved 2D collision speed

- slight improvement to 2D collision code efficiency
- added faster "division" to C3/ESP8266 by using a right shift trick (biasing towards 0 also for negative numbers by applying proper rounding)

* minor tweak in PS balance
2025-02-17 18:32:12 +01:00
Will Tatam
1dc7647bb9 Merge branch 'main' into usermod-libs 2025-02-16 10:40:30 +00:00
netmindz
c3f6537a4d
Merge pull request #4558 from DedeHai/wifi_hardware_timing_fix
Bugfix for incorrect wifi-hardware timing
2025-02-16 10:33:52 +00:00
maxi4329
aa3fb7d165 update links to point to the new repo 2025-02-15 20:07:41 +01:00
maxi4329
7f24269511
Fix for #4153 (#4253)
* fix for #4153

* only load touch/mouse events for touch/mouse devices

* undid formating changes

* undid more formating changes

* undid all formating changes

* use pointerover and pointerout eventlisteners
2025-02-15 15:14:52 +01:00
Damian Schneider
b34d65fce0 fix for incorrect hardware timing 2025-02-15 10:34:44 +01:00
Brandon502
e7e0eb0f32 Pinwheel Rework
Optimized pinwheel algorithm. Math and memory optimizations by @DedeHai
2025-02-13 19:01:10 -05:00
Blaž Kristan
a0c55c6406
Merge pull request #4484 from blazoncek/parallel-I2S
WWA strip support & parallel I2S for S2/S3 (bumping outputs from 5/4 to 12)
2025-02-13 19:10:37 +01:00
Damian Schneider
aba736cb96 moved modulo 2025-02-10 20:26:34 +01:00
Damian Schneider
bdec873fed removed slider default 2025-02-10 08:42:22 +01:00
Damian Schneider
2cc73660bf bugfix (XY needs the modulo for zF/zD), updated amplitude for better range 2025-02-10 08:30:36 +01:00
Blaž Kristan
f3de45c6ad Remove reference to custom allocators 2025-02-09 21:43:35 +01:00
Blaž Kristan
386e2c6306
Merge pull request #4528 from blazoncek/ir-bugfix
Fix for "Send notifications on button press or IR" does not work when using "JSON remote" #4519
2025-02-09 20:36:44 +01:00
Blaž Kristan
2473065b98 Soap gap bugfix & aditional size tuning 2025-02-09 19:08:42 +01:00
Blaž Kristan
ed91c54654 Uninitialised _data bugfix 2025-02-09 18:24:10 +01:00
Damian Schneider
4d53e0adde
Fixes first pixel not being set in Stream FX (#4542)
* Fixes first pixel not being set
* added fix to Stream 2 as well
2025-02-08 16:45:33 +01:00
yangminglong
35f87365c9
Brightness follow sun (#4485)
* add usermod : Brightness Follow Sun
2025-02-08 10:11:14 +01:00
Damian Schneider
8e7d6d5dad cleanup and added Density slider
- moved local variables into function
- made coordinates an array
- amplitude can now be changed by user (default setting is a slight increase to original which cannot be avoided without complicated logic or default slider setting)
2025-02-08 10:06:29 +01:00
scourge411
95a10c692c
constexpr is invalid on is2D() (#4540)
* constexpr is invalid on is2D() (it does work on _V4 builds though)
2025-02-08 08:44:46 +01:00
Blaž Kristan
77d7082ffc Bugfix
- correct string length in strlcpy()
2025-02-07 16:56:16 +01:00
Blaž Kristan
c43d09c8b1 Move _data and allocation to derived class
- as suggested by @TripleWhy
- minimum length guard

Conflicts:
	wled00/bus_manager.cpp
	wled00/bus_manager.h
2025-02-07 16:18:53 +01:00
Damian Schneider
d92e60ee5f adding XY() lambda function back in
- slight increase in code size, speed is the same but better readability.
2025-02-07 15:23:44 +01:00
Damian Schneider
b9ceacb43d more optimizations and better readability 2025-02-07 11:14:13 +01:00
Damian Schneider
2fe809f15a consolidated double loops into function
- saves ~500 bytes of flash
- slight speed improvement
2025-02-07 09:46:06 +01:00
Blaž Kristan
8c717537c4 Lambda XY() 2025-02-06 15:12:04 +01:00
Damian Schneider
e088f4654a removed unnecessary changes 2025-02-06 11:32:33 +01:00
Damian Schneider
b363b6151c revert using color_fade() as it is slower
- ran a few more tests, it is 30% faster like it was originally so reverting. The conversion to 32bit color appears to be wasteful in resources.
2025-02-06 11:32:33 +01:00
Damian Schneider
3baa4f8223 improved speed and fixed issue
- fixed issue: blending was also done when color was on a key-index-color which is now skipped
- speed improvement: conversion is skipped if color is key-color
2025-02-06 11:32:33 +01:00
Damian Schneider
373f4cfefd removed unnecessary lambda function
performance is the same, the function just makes it a bit confusing.
2025-02-06 06:44:26 +01:00
Blaž Kristan
64a02b705a Blending style bugfix (wrong limit)
SoundSim bugfix (missing options)
2025-02-04 18:42:38 +01:00
Will Miles
1688546519 Fix RTC usermod 2025-02-03 18:48:07 +00:00
Blaž Kristan
1db3359b84 Replace unsigned with size_t 2025-02-01 12:07:31 +01:00
Damian Schneider
b64cd36468 fixes trail flickering randomly. thx @blazoncek for discovering 2025-01-31 14:14:23 +01:00
Will Miles
a5b972d87e Merge remote-tracking branch 'upstream/main' into usermod-libs 2025-01-31 02:51:56 +00:00
Blaž Kristan
5b7bab6752 Compile fixes 2025-01-30 20:46:26 +01:00
Blaž Kristan
70042db2de Allow "unlimited" virtual buses
- added config upload options
- number of buses it limited to 36 (0-9+A-Z identifiers)
- WRNING web server may not support that many variables
2025-01-30 19:41:44 +01:00
Blaž Kristan
bf69d37cbe Revert getBus() changes 2025-01-30 19:35:36 +01:00
Blaž Kristan
ee7ec20f29 Convert BusManager class to namespace
- use unique_ptr/make_unique for busses
2025-01-30 19:31:09 +01:00
Blaž Kristan
1e1ba9afa3 Fix for aircoookie/WLED#4519
- added JSON handling for irApplyToAllSelected
2025-01-30 19:19:27 +01:00
netmindz
32a75c1ff5
Merge pull request #4165 from willmmiles/esp8266-pwm-phase
Support PWM phase shifts on ESP8266
2025-01-27 19:05:46 +00:00