Skip to content

Add PS Pendulum (1D) FX to the user_fx usermod - #5793

Closed
BobLoeffler68 wants to merge 197 commits into
wled:mainfrom
BobLoeffler68:pr-ps-pendulum-user-fx
Closed

Add PS Pendulum (1D) FX to the user_fx usermod#5793
BobLoeffler68 wants to merge 197 commits into
wled:mainfrom
BobLoeffler68:pr-ps-pendulum-user-fx

Conversation

@BobLoeffler68

@BobLoeffler68 BobLoeffler68 commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

PS Pendulum effect (1D)
by Bob Loeffler and claude.ai; uses the Particle System by dedehai

  • First slider (speed) is for the speed of the pendulum LED going back and forth. (0 = random speed)
  • Second slider (intensity) is for the X offset. In the middle means the center of the pendulum will be in the middle of the LED strip. Moving the slider left will move the pendulum to the left, etc. (0 = random X offset)
  • Third slider (blur) is for how much of a trail the pendulum will leave.
  • Fourth slider (pause/delay) is for how long the effect will pause after the pendulum movement stops and before restarting the movement.
  • Fifth slider (gravity/damping) is for how much the pendulum movement will be dampened due to gravity. (0 = random damping)
  • Checkbox1 will select the LED color based on it's position on the strip.

Summary by CodeRabbit

  • New Features

    • Added a configurable pendulum particle effect for 1D and 2D displays.
    • Added ESP32-S3 and Waveshare HUB75 hardware configurations, including expanded panel support.
    • Improved button macro options for analog, switch, and pushbutton controls.
    • Added ESP8266 compatibility handling for PixelForge and optimized DDP streaming limits.
  • Bug Fixes

    • Improved LED transitions, gamma-corrected effects, memory handling, and startup behavior.
    • Strengthened network packet validation and Wi-Fi credential handling.
    • Improved audio-reactive allocation, microphone-change notifications, and reboot guidance.
  • Documentation

    • Expanded security, accessibility, hardware, branch, and feature documentation.

netmindz and others added 30 commits March 29, 2026 22:35
Updated instructions for providing references in analysis results.
Eliminates size limit.  Fixes wled#5458
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
replaces the last remaining FastLED.h with fstled_slim.h
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Fix Alexa/Hue discovery by correcting SSDP response to match UPnP spec
New extended data for usage report
Rather than append a linker file, we edit the upstream supplied ones to
add our section to the binaries.  Works better on all platforms.

Co-Authored-By: Claude <noreply@anthropic.com>
Use readelf instead of nm for great speed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
0.16 - Backport dynarray fixes from V5 WIP
…h) (wled#5499)

* use memory aligned allocations, fix bug in FFT magnitude (integer path)
* assign pointer to globals not local copy
- fix PS Sparkler for large setups: need 32bit random position, 16bit is not enough
- fix PS Fireworks 1D: need to `break` if no particles are available or it can lead to stalls on large setups
- do not use collisions by default PS Fuzzy Noise: its very slow on larger setups
Add identifier string for DMX realtime mode
* fix blending style options list filter for iOS
* fix default fallback
softhack007 and others added 27 commits June 23, 2026 22:58
…t detection (wled#5695)

* improved brownout detection on ESP32
* show "please restart" as "Note" instead of "Error"
* align ERR_REBOOT_NEEDED and ERR_POWEROFF_NEEDED with WLEDMM (prepare for AR out-of-tree)
* errorFlag constants update
* add new error codes to UI
* Clarify ERR_PERSISTENT_THRESHOLD as future-use only.
…wled#5694)

* clear garbage white value in hsv2rgb_rainbow, overwrite white value in Segment::color_wheel
* improve bootup behaviour for presets

* set color to black on segment construction, handle orange set where it should be

* use DEFAULT_COLOR instead of redefining it as magic numbers
…wled#5662)

Improvements:
* new pinouts for Seengreat RGB Matrix Adapter Board (https://seengreat.com/wiki/186)
* allow up to 128 pixels wide panels, prevent uint8 overflow for 128px panels

Bugfixes for 4-scan (aka QS) panels
* prevent panels going flatter each time that cfg.json is saved (32x32->16x64->8x128->4x128)
* correct VirtualMatrixPanel setup: need to use real panel dimensions, not modified mxconfig dimensions
*only set chainType when chain length > 1; use a chaintype that does not flip the display upside-down
* fix bug in bus removal
* optimized some JS alerts
* removed unneeded code
Added a flag for WLED_USE_SD_SPI to support "all usermods" test builds
Align build_flags in usermods platformio.ini with main paltformio.ini
might catch some broken DEBUG_PRINT statements in usermods
only added to -S3, as this build has 16MB flash size, so the boat is big enough.
* fix: prevent uint8 underflow in AP client disconnect handler

Add bounds check before decrementing apClients to prevent
wraparound from 0 to 255 when WiFiEvent fires disconnect
without a prior connect event.

Also fix typo: awailable -> available
)

The setInterval() call was inside setEffectParameters() which runs
frequently. Each call created a new interval without clearing the
previous one, causing a memory leak.

Now the interval ID is stored in _selFxInterval and cleared before
creating a new interval.
correct default UDP port from 21234 to 21324, to match the non-save-ram code.
will only happen when the version string is very long
* PinManager::getPinOwner(rxPin) returns an enum, not a string
* add getPinOwnerText to debug output
* avoid using an invalid UART number for C3 and S2
…cman FX, remove omggif.js for ESP8266 (wled#5734)

* prepare DDP for ESP8266 compatibility, fix compiler errros in pacman

* fix C3 compile issues

* remove unuseable omggif.js for ESP8266 and save 2.5k of flash.

* hide image tool on ESP8266 as gif is not supported

* run getLoc() before any fetch
# Conflicts:
#	.coderabbit.yaml
#	.github/copilot-instructions.md
#	.github/platformio_release.ini.template
#	AGENTS.md
#	CONTRIBUTING.md
#	docs/cpp.instructions.md
#	docs/esp-idf.instructions.md
#	docs/web.instructions.md
#	package-lock.json
#	package.json
#	pio-scripts/dynarray.py
#	pio-scripts/validate_modules.py
#	platformio.ini
#	wled00/bus_manager.cpp
#	wled00/data/pixelforge/pixelforge.htm
#	wled00/data/update.htm
#	wled00/e131.cpp
#	wled00/image_loader.cpp
#	wled00/wled.h
@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

The pull request is closed.

Warning

Ignoring CodeRabbit configuration file changes. For security, only the configuration from the base branch is applied for open source repositories.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 88837415-4438-4b5b-b407-74078b1b49dc

📥 Commits

Reviewing files that changed from the base of the PR and between d9b9a84 and 965139a.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (59)
  • .coderabbit.yaml
  • .github/copilot-instructions.md
  • .github/platformio_release.ini.template
  • .github/workflows/nightly.yml
  • .vscode/extensions.json
  • .vscode/tasks.json
  • AGENTS.md
  • CONTRIBUTING.md
  • docs/cpp.instructions.md
  • docs/esp-idf.instructions.md
  • docs/hardening.instructions.md
  • docs/securecode.instructions.md
  • docs/web.instructions.md
  • package.json
  • pio-scripts/dynarray.py
  • pio-scripts/validate_modules.py
  • platformio.ini
  • platformio_override.sample.ini
  • readme.md
  • usermods/DHT/DHT.cpp
  • usermods/EXAMPLE/usermod_v2_example.cpp
  • usermods/Fix_unreachable_netservices_v2/library.json
  • usermods/Fix_unreachable_netservices_v2/usermod_Fix_unreachable_netservices.cpp
  • usermods/audioreactive/audio_reactive.cpp
  • usermods/platformio_override.usermods.ini
  • usermods/user_fx/user_fx.cpp
  • wled00/FX.cpp
  • wled00/FX.h
  • wled00/FX_fcn.cpp
  • wled00/bus_manager.cpp
  • wled00/bus_manager.h
  • wled00/bus_wrapper.h
  • wled00/colors.h
  • wled00/const.h
  • wled00/data/common.js
  • wled00/data/index.js
  • wled00/data/pixelforge/pixelforge.htm
  • wled00/data/settings_leds.htm
  • wled00/data/settings_time.htm
  • wled00/data/settings_um.htm
  • wled00/data/settings_wifi.htm
  • wled00/data/update.htm
  • wled00/dmx_input.cpp
  • wled00/e131.cpp
  • wled00/fcn_declare.h
  • wled00/image_loader.cpp
  • wled00/improv.cpp
  • wled00/json.cpp
  • wled00/led.cpp
  • wled00/network.cpp
  • wled00/src/dependencies/e131/ESPAsyncE131.cpp
  • wled00/src/dependencies/e131/ESPAsyncE131.h
  • wled00/udp.cpp
  • wled00/util.cpp
  • wled00/wled.cpp
  • wled00/wled.h
  • wled00/wled_server.cpp
  • wled00/ws.cpp
  • wled00/xml.cpp

Walkthrough

The pull request updates review and security guidance, expands PlatformIO targets, adds a particle pendulum effect, changes LED rendering and HUB75 handling, strengthens packet validation, and updates WebUI behavior.

Changes

Repository guidance and build configuration

Layer / File(s) Summary
Review guidance and project documentation
.coderabbit.yaml, AGENTS.md, docs/*, CONTRIBUTING.md, readme.md, .github/*
Security review rules, branch documentation, contributor guidance, README content, release configuration, and workflow pinning were updated.
PlatformIO and usermod environments
platformio.ini, platformio_override.sample.ini, usermods/platformio_override.usermods.ini, usermods/*/library.json
New ESP32-S3 and HUB75 environments, release flags, usermod flags, dependency settings, and build compatibility changes were added.

Firmware and WebUI behavior

Layer / File(s) Summary
Usermods and effects
usermods/audioreactive/audio_reactive.cpp, usermods/user_fx/user_fx.cpp, usermods/DHT/DHT.cpp, usermods/EXAMPLE/*
Audio FFT allocation and realtime handling changed. The PS Pendulum effect was added and registered. Usermod compile-time and loop behavior were adjusted.
Rendering, transitions, and LED state
wled00/FX.cpp, wled00/FX.h, wled00/FX_fcn.cpp, wled00/led.cpp, wled00/json.cpp, wled00/wled.cpp, wled00/wled.h
Gamma compensation, Pac-Man types, transitions, pixel-buffer allocation, startup state, segment defaults, LED maps, and error states were updated.
Hardware buses and memory
wled00/bus_manager.cpp, wled00/bus_manager.h, wled00/bus_wrapper.h, wled00/util.cpp, wled00/network.cpp
HUB75 scan modes, board pin mappings, allocation fallbacks, PSRAM checks, reset errors, Ethernet configuration, and Wi-Fi diagnostics were changed.
WebUI controls and device-specific behavior
wled00/data/*.js, wled00/data/*.htm
Macro controls now depend on button type. Usermod pin options and state errors were updated. PixelForge restricts image features on ESP8266. Segment reset uses the firmware command.
Protocol parsing and dispatch
wled00/e131.cpp, wled00/src/dependencies/e131/*, wled00/ws.cpp, wled00/improv.cpp, wled00/fcn_declare.h
Packet lengths now propagate through protocol callbacks. DDP, Art-Net, E1.31, Improv, and WebSocket paths validate packet and buffer bounds before processing.

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related issues

Possibly related PRs

  • wled/WLED#5547 — Directly overlaps the packet-length validation and DDP/E1.31 dispatch changes.
  • wled/WLED#5647 — Directly overlaps HUB75 quad-scan, PSRAM, and LED-buffer handling.
  • wled/WLED#5572 — Directly overlaps the secure-code guidance and review-configuration changes.

Suggested labels: enhancement, effect, usermod

Suggested reviewers: softhack007, dedehai, blazoncek


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@BobLoeffler68

Copy link
Copy Markdown
Contributor Author

I think I created the PR incorrectly. I'll try again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.