diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index 34b5904de5..937dfa9c50 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -48,7 +48,7 @@ body: attributes: label: What version/release of MM WLED? description: You can find this in by going to Config -> Security & Updates -> Scroll to Bottom. Copy and paste the entire line after "Server message" - placeholder: "e.g. build 2401290, WLEDMM_0.14.1-b32.40_esp32_4MB_M.bin" + placeholder: "e.g. build 2401290, WLEDMM_14.5.0-beta_esp32_4MB_M.bin" validations: required: true - type: dropdown diff --git a/.github/workflows/wled-ci.yml b/.github/workflows/wled-ci.yml index d311af4ac0..8a44db719d 100644 --- a/.github/workflows/wled-ci.yml +++ b/.github/workflows/wled-ci.yml @@ -6,7 +6,7 @@ jobs: get_default_envs: name: Gather Environments - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: Cache pip @@ -31,7 +31,7 @@ jobs: build: name: Builds - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 needs: get_default_envs strategy: fail-fast: false @@ -74,7 +74,7 @@ jobs: path: build_output/release/*.bin release: name: Create Release - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 needs: [get_default_envs, build] if: startsWith(github.ref, 'refs/tags/') steps: diff --git a/package-lock.json b/package-lock.json index 59697131a3..9d3712007c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "wled", - "version": "0.14.1-b32.41.dev", + "version": "14.5.0-beta", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "wled", - "version": "0.14.1-b32.41.dev", + "version": "14.5.0-beta", "license": "EUPL-1.2", "dependencies": { "clean-css": "^4.2.3", diff --git a/package.json b/package.json index b6763b3347..9a600a2a9e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wled", - "version": "0.14.1-b32.41.dev", + "version": "14.5.0-beta", "description": "Tools for WLED project", "main": "tools/cdata.js", "directories": { diff --git a/platformio.ini b/platformio.ini index 642be4a125..17209ff734 100644 --- a/platformio.ini +++ b/platformio.ini @@ -55,11 +55,11 @@ default_envs = esp32_4MB_XL ; esp32_16MB_S ;; experimental, optimized for speed esp32_16MB_M ;; esp32 recommended for boards with 16MB flash + esp32_16MB_M_eth ; esp32_16MB_M_debug ; esp32_16MB_XL - esp8266_2MB_S - esp8266_4MB_S ;; recommended for 8266 with audio sync - esp8266_4MB_M + esp32_pico_4MB_M + ;; wemos_shield_esp32_4MB_M ; wemos_shield_esp32_4MB_ICS4343x_M ; wemos_shield_esp32_4MB_SPM1423_M @@ -69,38 +69,49 @@ default_envs = ; wemos_shield_esp32_16MB_SPM1423_M ; wemos_shield_esp32_16MB_SPM1423_XL ; wemos_shield_esp32_16MB_LineIn_M - esp32_pico_4MB_M - esp32_4MB_PSRAM_S - ; esp32_4MB_PSRAM_REV3_S ;; experimental, optimized for WROVER-E with "revision3" chip - esp32S3_4MB_S - esp32S3_8MB_S ;; experimental, optimized for speed - esp32S3_8MB_M - esp32S3_4MB_PSRAM_S ;; for lolin s3 mini, S3 zero, S3 super mini - optimized for speed - esp32S3_4MB_PSRAM_M ;; for lolin s3 mini, S3 zero, S3 super mini - esp32S3_8MB_PSRAM_M ;; experiemental - esp32S3_16MB_PSRAM_M_HUB75 ;; for S3 with 16MB flash, and MOONHUB HUB75 adapter board - esp32S3_WROOM-2_M ;; for S3 WROOM-2 - ;; esp32s2_tinyUF2_PSRAM_S ;; experimental - only for adafruit -S2 boards with tinyUF2 bootloader !!! + ;; + esp32_4MB_V4_S ;; experimental; HUB75 supported + esp32_4MB_V4_HUB75_forum ;; experimental; HUB75 supported (forum pinout) + esp32_16MB_V4_S ;; experimental - optimized for speed; HUB75 supported + esp32_16MB_V4_M ;; experimental; HUB75 supported + ; esp32_16MB_V4_M_debug ;; experimental + ; esp32_pico_4MB_V4_S ;; experimental - may work better in case you experience wifi connectivity problems + ;; + esp32_4MB_PSRAM_S ;; WROVER experimental; HUB75 supported + ; esp32_4MB_PSRAM_REV3_S ;; WROVER-E experimental, optimized for WROVER-E with "revision3" chip + ;; + esp32S3_4MB_S ;; for HD-WF2 (HUB75 supported) + esp32S3_8MB_S ;; experimental, optimized for speed, HUB75 supported + esp32S3_8MB_M ;; HUB75 supported + esp32S3_4MB_PSRAM_S ;; for lolin s3 mini, S3 zero, S3 super mini - optimized for speed (no HUB75 support) + esp32S3_4MB_PSRAM_M ;; for lolin s3 mini, S3 zero, S3 super mini (no HUB75 support) + esp32S3_8MB_PSRAM_M ;; experiemental; HUB75 supported + esp32S3_16MB_PSRAM_M_HUB75 ;; for S3 with 16MB flash, HUB75 supported (MOONHUB HUB75 adapter board) + esp32S3_WROOM-2_M ;; for S3 WROOM-2; HUB75 supported + ;; esp32s2_PSRAM_S ;; OTA-compatible with upstream esp32s2_PSRAM_M ;; for lolin S2 mini - esp32c3dev_4MB_M ;; experimental + ;; esp32s2_tinyUF2_PSRAM_S ;; experimental - only for adafruit -S2 boards with tinyUF2 bootloader !!! + ;; esp32c3dev_2MB_M ;; experimental - 2MB Flash, no OTA + esp32c3dev_4MB_M ;; experimental esp32c3mini_dio_4MB_M ;; for boards that need "dio" flash mode (instead of qio) seeed_esp32c3_4MB_S ;; experimental - esp32_4MB_V4_S ;; experimental - esp32_16MB_V4_S ;; experimental - optimized for speed - esp32_16MB_V4_M ;; experimental - esp32_16MB_V4_M_debug ;; experimental - esp32_pico_4MB_V4_S ;; experimental - may work better in case you experience wifi connectivity problems - esp8266pro_16MB_S + ;; + esp8266_2MB_S + esp8266_4MB_S ;; recommended for 8266 with audio sync + esp8266_4MB_M + ; esp8266pro_16MB_S esp8266pro_16MB_M esp01_1MB_S - esp32_16MB_M_eth + ;; athom_music_esp32_4MB_M - adafruit_matrixportal_esp32s3 + adafruit_matrixportal_esp32s3 ;; HUB75 supported + ; adafruit_matrixportal_esp32s3_tinyUF2 ;; experimental - uses adafruit bootloader ; Go to MoonModules environments for environments + src_dir = ./wled00 data_dir = ./wled00/data build_cache_dir = ~/.platformio/buildcache @@ -249,8 +260,6 @@ lib_deps = ;; https://github.com/softhack007/FastLED.git#ESP32-C6 ;; patched version needed for -C6 IRremoteESP8266 @ 2.8.2 ;;makuna/NeoPixelBus @ 2.7.5 ;; WLEDMM will be added in board specific sections - ;;https://github.com/Aircoookie/ESPAsyncWebServer.git @ ~2.0.7 - ;; https://github.com/lost-hope/ESPAsyncWebServer.git#master ;; WLEDMM to display .log and .wled files in /edit https://github.com/Aircoookie/ESPAsyncWebServer.git#v2.2.1 ;; newer with bugfixes and stability improvements #For use of the TTGO T-Display ESP32 Module with integrated TFT display uncomment the following line #TFT_eSPI @@ -1303,28 +1312,20 @@ build_flags = ${esp32_4MB_S_base.build_flags} ${Speed_Flags.build_flags} ;; -O2 -> optimize for speed instead of size -D WLED_RELEASE_NAME=esp32_4MB_S -D WLEDMM_FASTPATH ; WLEDMM experimental option. Reduces audio lag (latency), and allows for faster LED framerates. May break compatibility with previous versions. - ;; for speed builds, we need to disable some features to stay within 4MB flash - ;-D WLED_DISABLE_ALEXA - -D WLED_DISABLE_HUESYNC - -D WLED_DISABLE_LOXONE - ;-D WLED_DISABLE_MQTT - ;-D WLED_DISABLE_INFRARED - -D WLEDMM_SAVE_FLASH + ;-D WLEDMM_SAVE_FLASH ;WLEDMM: disable the next line if you don't need "net Debug". It will free ~2% of flash ${common_mm.NetDebug_build_flags} -;; normal build -; RAM: [=== ] 25.0% (used 81988 bytes from 327680 bytes) -; Flash: [========= ] 87.4% (used 1374677 bytes from 1572864 bytes) WLEDMM: Earlier 85.7 ;; optimized-for-speed build -; RAM: [=== ] 25.4% (used 83244 bytes from 327680 bytes) -; Flash: [========= ] 93.3% (used 1466821 bytes from 1572864 bytes) +; RAM: [== ] 23.6% (used 77188 bytes from 327680 bytes) +; Flash: [========= ] 93.8% (used 1475997 bytes from 1572864 bytes) [env:esp32_4MB_M] extends = esp32_4MB_M_base build_flags = ${esp32_4MB_M_base.build_flags} -D WLED_RELEASE_NAME=esp32_4MB_M -; RAM: [=== ] 26.0% (used 85244 bytes from 327680 bytes) -; Flash: [==========] 97.4% (used 1532125 bytes from 1572864 bytes) + -D WLEDMM_SAVE_FLASH +; RAM: [== ] 24.2% (used 79196 bytes from 327680 bytes) +; Flash: [==========] 97.4% (used 1532425 bytes from 1572864 bytes) [env:esp32_4MB_M_eth] extends = esp32_4MB_M_base @@ -1333,7 +1334,9 @@ build_flags = ${esp32_4MB_M_base.build_flags} -D WLED_USE_ETHERNET -D RLYPIN=-1 -D BTNPIN=-1 ;; Prevent clash -D WLED_DISABLE_ESPNOW ;; ESP-NOW requires wifi, may crash with ethernet only - + -D WLEDMM_SAVE_FLASH +; RAM: [== ] 24.2% (used 79404 bytes from 327680 bytes) +; Flash: [==========] 97.8% (used 1538025 bytes from 1572864 bytes) [env:esp32_4MB_XL] extends = esp32_4MB_XL_base @@ -1347,8 +1350,8 @@ build_flags = ${esp32_4MB_XL_base.build_flags} -D WLEDMM_SAVE_FLASH ;; a humble attempt to save a few extra bytes build_unflags = ${esp32_4MB_XL_base.build_unflags} board_build.partitions = tools/WLED_ESP32_4MB_256KB_FS.csv -; RAM: [=== ] 26.3% (used 86188 bytes from 327680 bytes) -; Flash: [========= ] 85.2% (used 1619513 bytes from 1900544 bytes) +; RAM: [== ] 24.5% (used 80140 bytes from 327680 bytes) +; Flash: [========= ] 85.8% (used 1630789 bytes from 1900544 bytes) ;; standard framework build for 16MB flash, optimized for speed [env:esp32_16MB_S] @@ -1366,13 +1369,9 @@ build_flags = ${esp32_4MB_S_base.build_flags} lib_deps = ${esp32_4MB_S_base.lib_deps} ${common_mm.animartrix_lib_deps} ; lib_ignore = IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compilation -;; -;; normal build -; RAM: [=== ] 25.8% (used 84588 bytes from 327680 bytes) -; Flash: [======= ] 68.3% (used 1431377 bytes from 2097152 bytes) ;; optimized-for-speed build -; RAM: [=== ] 25.8% (used 84652 bytes from 327680 bytes) -; Flash: [======== ] 78.0% (used 1634829 bytes from 2097152 bytes) +; RAM: [== ] 23.7% (used 77524 bytes from 327680 bytes) +; Flash: [======= ] 72.9% (used 1528541 bytes from 2097152 bytes) [env:esp32_16MB_M] extends = esp32_4MB_M_base @@ -1381,9 +1380,9 @@ build_flags = ${esp32_4MB_M_base.build_flags} board = esp32_16MB board_build.partitions = tools/WLED_ESP32_16MB.csv ;; WLED standard for 16MB flash: 2MB firmware, 12 MB filesystem ;board_build.partitions = tools/WLED_ESP32_16MB_9MB_FS.csv ;; WLED extended for 16MB flash: 3.2MB firmware, 9 MB filesystem - ; RAM: [=== ] 26.0% (used 85244 bytes from 327680 bytes) - ; Flash: [======= ] 73.1% (used 1532125 bytes from 2097152 bytes) ;lib_ignore = IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compilation +; RAM: [== ] 24.2% (used 79196 bytes from 327680 bytes) +; Flash: [======= ] 73.6% (used 1542905 bytes from 2097152 bytes) [env:esp32_4MB_M_debug] extends = esp32_4MB_M_base @@ -1396,13 +1395,14 @@ build_flags = ${esp32_4MB_M_base.build_flags} -D CORE_DEBUG_LEVEL=2 ;; 2=warning -D WLED_RELEASE_NAME=esp32_4MB_M_debug monitor_filters = esp32_exception_decoder -; RAM: [== ] 24.5% (used 80292 bytes from 327680 bytes) -; Flash: [========= ] 94.5% (used 1487113 bytes from 1572864 bytes) +; RAM: [== ] 24.1% (used 79060 bytes from 327680 bytes) +; Flash: [==========] 99.3% (used 1561969 bytes from 1572864 bytes) [env:esp32_16MB_M_debug] extends = esp32_4MB_M_base build_unflags = ${common.build_unflags} -D CORE_DEBUG_LEVEL=0 + -D NDEBUG build_flags = ${esp32_4MB_M_base.build_flags} ${Debug_Flags.build_flags} ; -D WLED_DEBUG_HEAP ;; WLEDMM enable heap debugging (needs newer framework versions) @@ -1412,8 +1412,8 @@ monitor_filters = esp32_exception_decoder board = esp32_16MB board_build.partitions = tools/WLED_ESP32_16MB.csv ;; WLED standard for 16MB flash: 2MB firmware, 12 MB filesystem ;board_build.partitions = tools/WLED_ESP32_16MB_9MB_FS.csv ;; WLED extended for 16MB flash: 3.2MB firmware, 9 MB filesystem -; RAM: [== ] 24.5% (used 80292 bytes from 327680 bytes) -; Flash: [======= ] 70.9% (used 1487129 bytes from 2097152 bytes) +; RAM: [== ] 24.3% (used 79468 bytes from 327680 bytes) +; Flash: [======== ] 76.7% (used 1609205 bytes from 2097152 bytes) [env:esp32_16MB_XL] extends = esp32_4MB_XL_base @@ -1422,9 +1422,9 @@ build_flags = ${esp32_4MB_XL_base.build_flags} board = esp32_16MB board_build.partitions = tools/WLED_ESP32_16MB.csv ;; WLED standard for 16MB flash: 2MB firmware, 12 MB filesystem ;board_build.partitions = tools/WLED_ESP32_16MB_9MB_FS.csv ;; WLED extended for 16MB flash: 3.2MB firmware, 9 MB filesystem - ; RAM: [== ] 24.4% (used 79916 bytes from 327680 bytes) - ; Flash: [======= ] 67.0% (used 1405701 bytes from 2097152 bytes) ;lib_ignore = IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compilation +; RAM: [== ] 24.5% (used 80140 bytes from 327680 bytes) +; Flash: [======== ] 77.8% (used 1631929 bytes from 2097152 bytes) [env:esp32_16MB_M_eth] extends = esp32_4MB_M_base @@ -1435,8 +1435,8 @@ build_flags = ${esp32_4MB_M_base.build_flags} -D WLED_RELEASE_NAME=esp32_16MB_M_eth ; This will be included in the firmware.bin filename -D WLED_USE_ETHERNET -D WLED_DISABLE_ESPNOW ;; ESP-NOW requires wifi, may crash with ethernet only -; RAM: [=== ] 26.1% (used 85452 bytes from 327680 bytes) -; Flash: [======= ] 73.3% (used 1537945 bytes from 2097152 bytes) +; RAM: [== ] 24.2% (used 79388 bytes from 327680 bytes) +; Flash: [======= ] 73.8% (used 1548525 bytes from 2097152 bytes) [env:esp8266_2MB_S] @@ -1631,7 +1631,7 @@ lib_ignore = IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compila ;; Warning: the build-in LittleFS (arduino-esp32 2.0.x) seems to be "slightly different" from Lorol LittleFS. ;; When upgrading to the new framework, it might be necessary to first do a chip erase (make sure you have a backup of cfg.json and presets.json) -; compiled with ESP-IDF 4.4.1 +; compiled with ESP-IDF 4.4.1; HUB75 supported [env:esp32_4MB_V4_S] extends = esp32_4MB_V4_S_base build_flags = ${esp32_4MB_V4_S_base.esp32_build_flags} @@ -1648,12 +1648,12 @@ build_flags = ${esp32_4MB_V4_S_base.esp32_build_flags} ; -D WLED_DEBUG ; -D SR_DEBUG ; -D MIC_LOGGER - -D WLED_ENABLE_HUB75MATRIX - + ${common_mm.HUB75_build_flags} lib_deps = ${esp32_4MB_V4_S_base.esp32_lib_deps} + ${common_mm.HUB75_lib_deps} lib_ignore = IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compilation - ; RAM: [=== ] 28.1% (used 91960 bytes from 327680 bytes) - ; Flash: [==========] 97.8% (used 1537777 bytes from 1572864 bytes) +; RAM: [=== ] 25.5% (used 83400 bytes from 327680 bytes) +; Flash: [==========] 97.3% (used 1530013 bytes from 1572864 bytes) ;; softhack007: my favourite HUB75 buildenv - fastest possible [env:esp32_4MB_V4_HUB75_forum] @@ -1667,14 +1667,14 @@ build_unflags = ${esp32_4MB_V4_S_base.build_unflags} -DARDUINO_EVENT_RUNNING_CORE=1 ;;-DCORE_DEBUG_LEVEL=0 ;; -D NDEBUG - -D NO_CIE1931 ;; Do use LED brightness compensation described in CIE 1931 + ;; -D NO_CIE1931 ;; Do use LED brightness compensation described in CIE 1931 build_flags = ${esp32_4MB_V4_S_base.esp32_build_flags} ;; -Wsuggest-attribute=const -Wsuggest-attribute=pure ;; -Wmissing-noreturn -Wmissing-return ;; -Wall -Wextra -Wno-unused-value -Wno-format -Wno-type-limits - -D WLED_RELEASE_NAME=esp32_4MB_V4_HUB75 + -D WLED_RELEASE_NAME=esp32_4MB_V4_HUB75_forum ${Speed_Flags.build_flags_V4} ;; -O2 -> optimize for speed instead of size ;; -D DEBUG -D WLED_WATCHDOG_TIMEOUT=0 #-D WLED_DISABLE_BROWNOUT_DET @@ -1689,8 +1689,8 @@ build_flags = ${esp32_4MB_V4_S_base.esp32_build_flags} ;; -D WLED_DEBUG ;; -D SR_DEBUG -D WLED_BOOTUPDELAY=350 - -D WLED_ENABLE_HUB75MATRIX -DESP32_FORUM_PINOUT - ;; -D HUB75_NO_DOUBLEBUFFER ;; -D PIXEL_COLOUR_DEPTH_BITS=12 + ${common_mm.HUB75_build_flags} + -DESP32_FORUM_PINOUT ${common_mm.animartrix_build_flags} ;;-DARDUINO_EVENT_RUNNING_CORE=0 ;; assign Wifi to core0, to have more CPU on core#1 (arduino loop) ;;-DARDUINO_RUNNING_CORE=1 ;; should be default, but does not hurt @@ -1701,11 +1701,8 @@ build_flags = ${esp32_4MB_V4_S_base.esp32_build_flags} -D WLEDMM_SAVE_FLASH -D WLED_DISABLE_BROWNOUT_DET ;;-DCORE_DEBUG_LEVEL=1 - ;;-D WLED_DISABLE_PARTICLESYSTEM1D - ;;-D WLED_DISABLE_PARTICLESYSTEM2D - ;;-D WLED_DISABLE_PARTICLESYSTEM_BUFFER - lib_deps = ${esp32_4MB_V4_S_base.esp32_lib_deps} + ${common_mm.HUB75_lib_deps} ${common_mm.animartrix_lib_deps} lib_ignore = IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compilation ;; ${common_mm.DMXin_lib_ignore} @@ -1713,7 +1710,8 @@ lib_ignore = IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compila board_build.partitions = ${esp32.big_partitions} board_build.f_flash = 80000000L ; use full 80MHz speed for flash (default = 40Mhz) board_build.flash_mode = qio ; (dio = dual i/o; more compatible than qio = quad i/o) - +; RAM: [== ] 23.7% (used 77720 bytes from 327680 bytes) +; Flash: [========= ] 93.1% (used 1768897 bytes from 1900544 bytes) ; compiled with ESP-IDF 4.4.1 [env:esp32_4MB_V4_M] @@ -1737,11 +1735,10 @@ build_unflags = ${esp32_4MB_V4_M_base.build_unflags} -D USERMOD_ARTIFX -D USERMOD_AUTO_SAVE -D WLED_ENABLE_HUB75MATRIX +; RAM: [=== ] 26.1% (used 85632 bytes from 327680 bytes) +; Flash: [==========] 99.5% (used 1565065 bytes from 1572864 bytes) -;; RAM: [=== ] 28.0% (used 91664 bytes from 327680 bytes) -;; Flash: [==========] 99.5% (used 1564945 bytes from 1572864 bytes) - -;; V4 build for 16MB flash, optimized for speed +;; V4 build for 16MB flash, optimized for speed; HUB75 supported [env:esp32_16MB_V4_S] extends = esp32_4MB_V4_S_base build_unflags = ${esp32_4MB_V4_S_base.build_unflags} @@ -1752,20 +1749,22 @@ build_flags = ${esp32_4MB_V4_S_base.esp32_build_flags} -D WLED_WATCHDOG_TIMEOUT=0 #-D WLED_DISABLE_BROWNOUT_DET -D ARDUINO_USB_CDC_ON_BOOT=0 ; needed for arduino-esp32 >=2.0.4; avoids errors on startup -D WLEDMM_FASTPATH ; WLEDMM experimental option. Reduces audio lag (latency), and allows for faster LED framerates. May break compatibility with previous versions. - ;; ${common_mm.animartrix_build_flags} ;; breaks the build - Internal Compiler Error + -D WLED_DISABLE_BROWNOUT_DET + -D JSON_BUFFER_SIZE=18432 -D MIN_HEAP_SIZE=6144 + -D MAX_SEGMENT_DATA=40960 ;; default 32767 + ${common_mm.HUB75_build_flags} + ${common_mm.animartrix_build_flags} lib_deps = ${esp32_4MB_V4_S_base.esp32_lib_deps} - ;; ${common_mm.animartrix_lib_deps} + ${common_mm.HUB75_lib_deps} + ${common_mm.animartrix_lib_deps} board = esp32_16MB board_build.partitions = tools/WLED_ESP32_16MB.csv ;; WLED standard for 16MB flash: 2MB firmware, 12 MB filesystem ;board_build.partitions = tools/WLED_ESP32_16MB_9MB_FS.csv ;; WLED extended for 16MB flash: 3.2MB firmware, 9 MB filesystem -;; normal build -; RAM: [=== ] 25.4% (used 83312 bytes from 327680 bytes) -; Flash: [======= ] 73.3% (used 1536317 bytes from 2097152 bytes) ;; optimized-for-speed build -; RAM: [=== ] 26.1% (used 85396 bytes from 327680 bytes) -; Flash: [======== ] 82.8% (used 1736129 bytes from 2097152 bytes) +; RAM: [== ] 23.7% (used 77704 bytes from 327680 bytes) +; Flash: [======== ] 84.4% (used 1770341 bytes from 2097152 bytes) -; compiled with ESP-IDF 4.4.1 +; compiled with ESP-IDF 4.4.1; HUB75 included (may have PIN conflicts) [env:esp32_16MB_V4_M] extends = esp32_4MB_V4_M_base build_flags = ${esp32_4MB_V4_M_base.esp32_build_flags} @@ -1779,17 +1778,22 @@ build_flags = ${esp32_4MB_V4_M_base.esp32_build_flags} -D ENCODER_DT_PIN=35 -D ENCODER_CLK_PIN=39 -D ENCODER_SW_PIN=5 ; WLEDMM spec by @SERG74: use 35 and 39 instead of 18 and 19 (conflicts) -D FLD_PIN_SCL=-1 -D FLD_PIN_SDA=-1 ; use global! -D HW_PIN_SCL=22 -D HW_PIN_SDA=21 + ${common_mm.HUB75_build_flags} + ${common_mm.animartrix_build_flags} lib_deps = ${esp32_4MB_V4_M_base.esp32_lib_deps} + ${common_mm.HUB75_lib_deps} + ${common_mm.animartrix_lib_deps} board = esp32_16MB board_build.partitions = tools/WLED_ESP32_16MB.csv ;; WLED standard for 16MB flash: 2MB firmware, 12 MB filesystem ;board_build.partitions = tools/WLED_ESP32_16MB_9MB_FS.csv ;; WLED extended for 16MB flash: 3.2MB firmware, 9 MB filesystem - ; RAM: [== ] 24.8% (used 81316 bytes from 327680 bytes) - ; Flash: [======= ] 72.9% (used 1528253 bytes from 2097152 bytes) +; RAM: [=== ] 25.7% (used 84104 bytes from 327680 bytes) +; Flash: [======== ] 80.7% (used 1692269 bytes from 2097152 bytes) [env:esp32_16MB_V4_M_debug] extends = esp32_4MB_V4_M_base build_unflags = ${common.build_unflags} -D CORE_DEBUG_LEVEL=0 + -D NDEBUG build_flags = ${esp32_4MB_V4_M_base.esp32_build_flags} ${Debug_Flags.build_flags} -D CORE_DEBUG_LEVEL=4 ;; 0=none, 1=error, 2=warning, 3=info, 4=debug, 5=verbose @@ -1802,16 +1806,24 @@ board = esp32_16MB board_build.partitions = tools/WLED_ESP32_16MB.csv ;; WLED standard for 16MB flash: 2MB firmware, 12 MB filesystem ;board_build.partitions = tools/WLED_ESP32_16MB_9MB_FS.csv ;; WLED extended for 16MB flash: 3.2MB firmware, 9 MB filesystem monitor_filters = esp32_exception_decoder -; RAM: [=== ] 25.0% (used 82008 bytes from 327680 bytes) -; Flash: [======== ] 78.1% (used 1638193 bytes from 2097152 bytes) WLEDMM: Earlier 76.9 +; RAM: [=== ] 26.4% (used 86356 bytes from 327680 bytes) +; Flash: [======== ] 83.6% (used 1753461 bytes from 2097152 bytes) -;; experimental environment for boards with PSRAM (needs ESP-IDF 4.4.1). +;; experimental environment for boards with PSRAM (needs ESP-IDF 4.4.1). HUB75 included (may have PIN conflicts) [env:esp32_4MB_PSRAM_S] extends = esp32_4MB_V4_S_base board = lolin_d32_pro ;board = esp32cam +;board = ttgo-t7-v14-mini32 +board_build.partitions = ${esp32.extended_partitions} +board_build.f_flash = 80000000L +;board_build.flash_mode = dio + build_unflags = ${esp32_4MB_V4_S_base.build_unflags} - -D WLED_ENABLE_HUB75MATRIX ;; uses too much flash + -D WLED_ENABLE_DMX + -D WLED_ENABLE_DMX_INPUT + ; -D WLED_ENABLE_HUB75MATRIX ;; uses a lot of flash + ; -D USERMOD_ANIMARTRIX ;; uses a lot of memory build_flags = ${esp32_4MB_V4_S_base.esp32_build_flags} -D WLED_RELEASE_NAME=esp32_4MB_PSRAM_S -D WLED_WATCHDOG_TIMEOUT=0 #-D WLED_DISABLE_BROWNOUT_DET @@ -1825,14 +1837,19 @@ build_flags = ${esp32_4MB_V4_S_base.esp32_build_flags} -D WLED_DISABLE_ALEXA ; RAM 116 bytes; FLASH 13524 bytes -D WLED_DISABLE_MQTT ; RAM 216 bytes; FLASH 16496 bytes -D WLED_DISABLE_INFRARED ;RAM 136 bytes; FLASH 24492 bytes ewowi: disabled to stay below 100% - ; -D WLED_ENABLE_DMX ; -D WLED_DEBUG ; -D SR_DEBUG ; -D MIC_LOGGER + ${common_mm.HUB75_build_flags} lib_deps = ${esp32_4MB_V4_S_base.esp32_lib_deps} -lib_ignore = IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compilation -;; RAM: [== ] 20.4% (used 66960 bytes from 327680 bytes) -;; Flash: [==========] 98.7% (used 1553129 bytes from 1572864 bytes) + ${common_mm.HUB75_lib_deps} +lib_ignore = + IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compilation + ;; ${common_mm.HUB75_lib_ignore} + ${common_mm.animartrix_lib_ignore} + ${common_mm.DMXin_lib_ignore} +;; RAM: [== ] 17.8% (used 58236 bytes from 327680 bytes) +;; Flash: [========= ] 90.0% (used 1534209 bytes from 1703936 bytes) ;; similar to 4MB_PSRAM_S, but optimized for WROVER-E (chip revision >= 3) that doesn't need any workarounds for PSRAM any more ;; tl;dr: its faster on PSRAM. But it will not work on all boards. @@ -1840,13 +1857,16 @@ lib_ignore = IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compila extends = esp32_4MB_V4_S_base ;board = esp32cam board = lolin_d32_pro -;board_build.partitions = tools/WLED_ESP32_4MB_256KB_FS.csv ;; Alternative for 4MB flash: 1.8MB firmware, 256KB filesystem (esptool erase_flash needed before changing) +;board = ttgo-t7-v14-mini32 +board_build.partitions = ${esp32.extended_partitions} +board_build.f_flash = 80000000L +board_build.flash_mode = dio + build_unflags = ${esp32_4MB_V4_S_base.build_unflags} ;;${Speed_Flags.build_unflags} ;; to override -Os -DARDUINO_EVENT_RUNNING_CORE=1 ;; we want to run wifi on core0, so remove the standard flag -mfix-esp32-psram-cache-issue ;; this fix is not needed any more for revision 3 -mfix-esp32-psram-cache-strategy=memw ;; same as above - -D WLED_ENABLE_HUB75MATRIX ;; uses too much flash build_flags = ${esp32_4MB_V4_S_base.esp32_build_flags} -DARDUINO_EVENT_RUNNING_CORE=0 ;; assign Wifi to core0, to have more CPU on core#1 (arduino loop) @@ -1864,49 +1884,29 @@ build_flags = ${esp32_4MB_V4_S_base.esp32_build_flags} -D WLED_DISABLE_LOXONE ; FLASH 1272 bytes -D WLED_DISABLE_HUESYNC ; RAM 122 bytes; FLASH 6308 bytes -D WLED_DISABLE_ALEXA ; RAM 116 bytes; FLASH 13524 bytes - -D WLED_DISABLE_MQTT ; RAM 216 bytes; FLASH 16496 bytes + ; -D WLED_DISABLE_MQTT ; RAM 216 bytes; FLASH 16496 bytes -D WLED_DISABLE_INFRARED ;RAM 136 bytes; FLASH 24492 bytes ewowi: disabled to stay below 100% ;-D WLED_DISABLE_ADALIGHT ;; To disable serial protocols (see upstream #3128) ; -D WLED_ENABLE_DMX ; -D WLED_DEBUG ; -D SR_DEBUG ; -D MIC_LOGGER + ${common_mm.HUB75_build_flags} lib_deps = ${esp32_4MB_V4_S_base.esp32_lib_deps} -lib_ignore = IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compilation -;; RAM: [== ] 20.4% (used 66976 bytes from 327680 bytes) -;; Flash: [==========] 97.0% (used 1525833 bytes from 1572864 bytes) - -;; PSRAM build env that only leaves 300Kb for filesystem (instead of 1MB), but adds 300kB for program space -[env:esp32_4MB_PSRAM_M] -extends = esp32_4MB_V4_M_base -board = lolin_d32_pro -;board = esp32cam -board_build.partitions = tools/WLED_ESP32_4MB_256KB_FS.csv ;; 1.8MB firmware, 256KB filesystem (esptool erase_flash needed when changing from "standard WLED" partitions) -build_flags = ${esp32_4MB_V4_M_base.esp32_build_flags} - -D WLED_RELEASE_NAME=esp32_4MB_PSRAM_M - -D WLED_WATCHDOG_TIMEOUT=0 #-D WLED_DISABLE_BROWNOUT_DET - -D ARDUINO_USB_CDC_ON_BOOT=0 ; needed for arduino-esp32 >=2.0.4; avoids errors on startup - -D WLEDMM_SAVE_FLASH - -DBOARD_HAS_PSRAM ;; -D WLED_USE_PSRAM ;; WLED_USE_PSRAM causes major slow-down (slow LEDs) on some ESP32 boards - -D WLED_USE_PSRAM_JSON -DALL_JSON_TO_PSRAM ; WLEDMM --> force all JSON stuff into PSRAM; gives more free heap - -D WLED_DISABLE_LOXONE ;; FLASH 1272 bytes - -D WLED_DISABLE_HUESYNC ;; RAM 122 bytes; FLASH 6308 bytes - -D WLED_DISABLE_ALEXA ;; RAM 116 bytes; FLASH 13524 bytes - ; -D WLED_DISABLE_MQTT ;; RAM 216 bytes; FLASH 16496 bytes - ; -D WLED_DISABLE_INFRARED ;;RAM 136 bytes; FLASH 24492 bytes - ; -D WLED_ENABLE_DMX - ; -D WLED_DEBUG - ; -D SR_DEBUG - ; -D MIC_LOGGER -lib_deps = ${esp32_4MB_V4_M_base.esp32_lib_deps} -;lib_ignore = IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compilation -;; RAM: [== ] 20.7% (used 67672 bytes from 327680 bytes) -;; Flash: [========= ] 90.4% (used 1718421 bytes from 1900544 bytes) + ${common_mm.HUB75_lib_deps} +lib_ignore = + IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compilation + ${common_mm.animartrix_lib_ignore} + ;; ${common_mm.HUB75_lib_ignore} +;; RAM: [== ] 18.0% (used 58920 bytes from 327680 bytes) +;; Flash: [========= ] 90.6% (used 1542929 bytes from 1703936 bytes) # ------------------------------------------------------------------------------ # esp32-S3 environments # ------------------------------------------------------------------------------ + + [env:esp32S3_4MB_S] ;; Use for HD-WF2 extends = esp32_4MB_V4_M_base board = esp32-s3-devkitc-1 @@ -1988,6 +1988,7 @@ board_build.flash_mode = qio ; Flash: [======= ] 70.6% (used 1479573 bytes from 2097152 bytes) ;; MM for ESP32-S3 PSRAM development board, with 8MB FLASH and >= 8MB PSRAM (memory_type: qio_opi) +;; HUB75 supported, but may still hve pin conflicts [env:esp32S3_8MB_PSRAM_M] extends = esp32_4MB_V4_M_base @@ -2026,14 +2027,13 @@ build_flags = ${common.build_flags} ${esp32s3.build_flags} -Wno-misleading-inden ; -D MIC_LOGGER lib_deps = ${esp32s3.lib_deps} ${common_mm.lib_deps_S} ${common_mm.lib_deps_V4_M} ${common_mm.HUB75_lib_deps} - ;lib_ignore = IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compilation board_build.partitions = tools/WLED_ESP32_8MB.csv ; RAM: [== ] 21.1% (used 69156 bytes from 327680 bytes) ; Flash: [======== ] 75.9% (used 1591817 bytes from 2097152 bytes) -;; MM for ESP32-S3 boards - FASTPATH + optimize for speed [env:esp32S3_8MB_S] +;; MM for ESP32-S3 boards - FASTPATH + optimize for speed; ; HUB75 support included (may still have pin conflicts) extends = esp32_4MB_V4_M_base board = esp32-s3-devkitc-1 ;; generic S3 dev board board_build.flash_mode = qio ;; use "dio" if your board gets unstable with "qio" @@ -2047,6 +2047,7 @@ build_flags = ${common.build_flags} ${esp32s3.build_flags} -Wno-misleading-inden ;;-D WLED_DISABLE_ADALIGHT ;; disables serial protocols - recommended for Hardware-CDC USB (Serial RX will receive junk commands when RX pin is unconnected, unless its pulled down by resistor) ${Speed_Flags.build_flags_V4} ;; optimize for speed instead of size -D WLEDMM_FASTPATH ; WLEDMM experimental option. Reduces audio lag (latency), and allows for faster LED framerates. May break compatibility with previous versions. + ${common_mm.HUB75_build_flags} ${common_mm.animartrix_build_flags} -D WLED_WATCHDOG_TIMEOUT=0 -D CONFIG_ASYNC_TCP_USE_WDT=0 -D WLED_DISABLE_LOXONE ; FLASH 1272 bytes @@ -2068,15 +2069,13 @@ build_flags = ${common.build_flags} ${esp32s3.build_flags} -Wno-misleading-inden ; -D SR_DEBUG ; -D MIC_LOGGER lib_deps = ${esp32s3.lib_deps} ${common_mm.lib_deps_S} + ${common_mm.HUB75_lib_deps} ${common_mm.animartrix_lib_deps} lib_ignore = IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compilation board_build.partitions = tools/WLED_ESP32_8MB.csv -;; normal build -; RAM: [== ] 24.9% (used 81656 bytes from 327680 bytes) -; Flash: [======= ] 66.1% (used 1386229 bytes from 2097152 bytes) ;; optimized-for-speed build -; RAM: [=== ] 25.8% (used 84544 bytes from 327680 bytes) -; Flash: [======== ] 78.1% (used 1638737 bytes from 2097152 bytes) +; RAM: [=== ] 26.0% (used 85328 bytes from 327680 bytes) +; Flash: [======== ] 79.9% (used 1674885 bytes from 2097152 bytes) ;; for S3 with 16MB flash, octal PSRAM, @@ -2167,6 +2166,8 @@ extends = env:esp32S3_8MB_S board = lolin_s3_mini ;; -S3 mini: 4MB flash 2MB PSRAM board_build.partitions = tools/WLED_ESP32_4MB_256KB_FS.csv ;; 1.8MB firmware, 256KB filesystem (esptool erase_flash needed when changing from "standard WLED" partitions) ;; board_build.partitions = tools/WLED_ESP32_4MB_512KB_FS.csv ;; 1.7MB firmware, 500KB filesystem (esptool erase_flash needed when changing from "standard WLED" partitions) +build_unflags = ${common.build_unflags} + -D WLED_ENABLE_HUB75MATRIX ;; board does not have enough pins for HUB75 build_flags = ${common.build_flags} ${esp32s3.build_flags} -Wno-misleading-indentation -Wno-format-truncation ${common_mm.build_flags_S} -D WLED_RELEASE_NAME=esp32S3_4MB_PSRAM_S @@ -2195,16 +2196,23 @@ build_flags = ${common.build_flags} ${esp32s3.build_flags} -Wno-misleading-inden ; -D WLED_DEBUG ; -D SR_DEBUG ; -D MIC_LOGGER +lib_deps = ${esp32s3.lib_deps} ${common_mm.lib_deps_S} ${common_mm.lib_deps_V4_M} + ${common_mm.animartrix_lib_deps} lib_ignore = IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compilation -; RAM: [== ] 20.4% (used 66908 bytes from 327680 bytes) -; Flash: [========= ] 87.1% (used 1655529 bytes from 1900544 bytes) + ${common_mm.HUB75_lib_ignore} + ${common_mm.DMXin_lib_ignore} +; RAM: [== ] 18.6% (used 60828 bytes from 327680 bytes) +; Flash: [======== ] 76.9% (used 1461829 bytes from 1900544 bytes) ;; MM for esp32-s3 zero/supermini and lolin S3 mini boards - standard [env:esp32S3_4MB_PSRAM_M] extends = env:esp32S3_8MB_M board = lolin_s3_mini ;; -S3 mini: 4MB flash 2MB PSRAM board_build.partitions = ${esp32.default_partitions} +build_unflags = ${common.build_unflags} + -D WLED_ENABLE_HUB75MATRIX ;; board does not have enough pins for HUB75 + -D USERMOD_ANIMARTRIX ;; not enough flash build_flags = ${common.build_flags} ${esp32s3.build_flags} -Wno-misleading-indentation -Wno-format-truncation ${common_mm.build_flags_S} ${common_mm.build_flags_M} -D WLED_RELEASE_NAME=esp32S3_4MB_PSRAM_M @@ -2215,7 +2223,7 @@ build_flags = ${common.build_flags} ${esp32s3.build_flags} -Wno-misleading-inden -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=0 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=1 ;; for Serial-to-USB chip ;;-DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=1 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=1 ;; for Hardware-CDC USB mode -D WLED_DISABLE_ADALIGHT ;; disables serial protocols - recommended for Hardware-CDC USB (Serial RX will receive junk commands when RX pin is unconnected, unless its pulled down by resistor) - ${common_mm.animartrix_build_flags} + ;; ${common_mm.animartrix_build_flags} ;; not enough flash -D LEDPIN=21 -D BTNPIN=-1 -D RLYPIN=-1 -D IRPIN=-1 -D AUDIOPIN=-1 -D HW_PIN_SDA=12 -D HW_PIN_SCL=13 @@ -2232,8 +2240,11 @@ build_flags = ${common.build_flags} ${esp32s3.build_flags} -Wno-misleading-inden lib_deps = ${esp32s3.lib_deps} ${common_mm.lib_deps_S} ${common_mm.lib_deps_V4_M} lib_ignore = IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compilation -; RAM: [== ] 20.6% (used 67532 bytes from 327680 bytes) -; Flash: [==========] 98.4% (used 1547445 bytes from 1572864 bytes) + ${common_mm.HUB75_lib_ignore} + ${common_mm.DMXin_lib_ignore} + ${common_mm.animartrix_lib_ignore} +; RAM: [== ] 18.7% (used 61172 bytes from 327680 bytes) +; Flash: [==========] 97.7% (used 1536157 bytes from 1572864 bytes) # ------------------------------------------------------------------------------ @@ -2787,9 +2798,9 @@ platform = ${esp32.platformV4_xp} ;; 6.5.0 = first platform release supporting m platform_packages = ${esp32.platformV4_packages_xp} ;; arduino-esp32 2.0.14 needed - previous versions were missing files for matrixportal board = adafruit_matrixportal_esp32s3 -board_build.partitions = ${esp32.large_partitions} -board_build.f_flash = 80000000L -board_build.flash_mode = qio +board_build.partitions = ${esp32.large_partitions} ;; default 8MB WLED partitions +;; board_build.f_flash = 80000000L ;; this is the default for board = adafruit_matrixportal_esp32s3 +;; board_build.flash_mode = qio ;; ditto build_unflags = ${env:esp32S3_8MB_M.build_unflags} ;; use the same as "normal" S3 buildenv -D ARDUINO_USB_CDC_ON_BOOT=1 ;; fix warning: "ARDUINO_USB_CDC_ON_BOOT" redefined; comment out for Serial debug @@ -2818,5 +2829,19 @@ lib_deps = ${esp32s3.lib_deps} ${common_mm.lib_deps_S} ;; ;; do not include ${e lib_ignore = IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compilation monitor_filters = esp32_exception_decoder ; -; RAM: [== ] 20.4% (used 66984 bytes from 327680 bytes) -; Flash: [========= ] 94.8% (used 1491489 bytes from 1572864 bytes) +; RAM: [== ] 18.4% (used 60456 bytes from 327680 bytes) +; Flash: [======== ] 79.9% (used 1675601 bytes from 2097152 bytes) + +;; this buildenv uses the original bootloader and partions from adafruit +[env:adafruit_matrixportal_esp32s3_tinyUF2] +extends = env:adafruit_matrixportal_esp32s3 +board_build.partitions = tools/partitions-8MB_spiffs-tinyuf2.csv ;; use original adafruit 8MB tinyUF2 partitioning + +;; we just replace WLED_RELEASE_NAME +build_unflags = ${env:adafruit_matrixportal_esp32s3.build_unflags} + -D WLED_RELEASE_NAME=matrixportal_esp32s3 +build_flags = ${env:adafruit_matrixportal_esp32s3.build_flags} + -D WLED_RELEASE_NAME=matrixportal_esp32s3_tinyUF2 +; +; RAM: [== ] 18.4% (used 60456 bytes from 327680 bytes) +; Flash: [======== ] 79.9% (used 1675601 bytes from 2097152 bytes) diff --git a/readme.md b/readme.md index 83c488e4b4..a44a82b3ae 100644 --- a/readme.md +++ b/readme.md @@ -14,7 +14,7 @@ image -MoonModules/WLED is a fork from [Aircoookie/WLED](https://github.com/Aircoookie/WLED) which contains latest merge of v0.14 of WLED with [additional features](https://mm.kno.wled.ge/moonmodules/what-is-moonmodules/). +MoonModules/WLED is a fork of [Aircoookie/WLED](https://github.com/Aircoookie/WLED) which contains latest merge of v0.14 of WLED with [additional features](https://mm.kno.wled.ge/moonmodules/what-is-moonmodules/). This fork is created by members of the [Atuline/WLED](https://github.com/atuline/WLED) team to make development against v0.14 possible while still preserving [Atuline/WLED v0.13.x](https://github.com/atuline/WLED/tree/dev) as a stable and supported version. The Atuline/WLED fork is also called WLED SR (Sound Reactive). diff --git a/tools/partitions-8MB_spiffs-tinyuf2.csv b/tools/partitions-8MB_spiffs-tinyuf2.csv new file mode 100644 index 0000000000..27ed4c2d6a --- /dev/null +++ b/tools/partitions-8MB_spiffs-tinyuf2.csv @@ -0,0 +1,10 @@ +# ESP-IDF Partition Table +# Name, Type, SubType, Offset, Size, Flags +# bootloader.bin,, 0x1000, 32K +# partition table,, 0x8000, 4K +nvs, data, nvs, 0x9000, 20K, +otadata, data, ota, 0xe000, 8K, +ota_0, app, ota_0, 0x10000, 2048K, +ota_1, app, ota_1, 0x210000, 2048K, +uf2, app, factory,0x410000, 256K, +spiffs, data, spiffs, 0x450000, 3776K, diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 85a8636b06..f5a95a698a 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -1289,6 +1289,9 @@ static uint16_t mode_fireworks_core(bool useaudio) { if (valid1) { if (SEGMENT.is2D()) SEGMENT.setPixelColorXY(SEGENV.aux0%width, SEGENV.aux0/width, sv1); else SEGMENT.setPixelColor(SEGENV.aux0, sv1); } // restore spark color after blur if (valid2) { if (SEGMENT.is2D()) SEGMENT.setPixelColorXY(SEGENV.aux1%width, SEGENV.aux1/width, sv2); else SEGMENT.setPixelColor(SEGENV.aux1, sv2); } // restore old spark color after blur + #if defined(ARDUINO_ARCH_ESP32) + random16_add_entropy(esp_random() & 0xFFFF); // improve randomness (esp32) + #endif if (addPixels) // WLEDMM for (int i=0; i> 2), MAX_RIPPLES); // 56 max for 16 segment ESP8266 uint16_t dataSize = sizeof(ripple) * maxRipples; + const uint16_t cols = strip.isMatrix ? SEGMENT.virtualWidth() : 1; + const uint16_t rows = strip.isMatrix ? SEGMENT.virtualHeight() : SEGMENT.virtualLength(); + const int16_t maxDim = max(2, (cols + rows) / 4); // WLEDMM + #if defined(ARDUINO_ARCH_ESP32) + random16_add_entropy(esp_random() & 0xFFFF); // improve randomness (esp32) + #endif + if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed if (SEGENV.call == 0) {SEGENV.setUpLeds(); SEGMENT.fill(BLACK);} // WLEDMM use lossless getPixelColor() @@ -2638,7 +2648,9 @@ uint16_t ripple_base() uint16_t cx = rippleorigin >> 8; uint16_t cy = rippleorigin & 0xFF; uint8_t mag = scale8(sin8_t((propF>>2)), amp); - if (propI > 0) SEGMENT.drawCircle(cx, cy, propI, color_blend(SEGMENT.getPixelColorXY(cx + propI, cy), col, mag), true); + propI = min(propI, maxDim); // WLEDMM make sure that circles are visible + if ((propI > 0) && (unsigned(cx + propI) < cols) && (unsigned(cy) < rows)) // WLEDMM + SEGMENT.drawCircle(cx, cy, propI, color_blend(SEGMENT.getPixelColorXY(cx + propI, cy), col, mag), true); } else #endif { @@ -3687,6 +3699,9 @@ uint16_t mode_exploding_fireworks(void) float gravity = -0.0004f - (SEGMENT.speed/800000.0f); // m/s/s gravity *= rows; +#if defined(ARDUINO_ARCH_ESP32) + random16_add_entropy(esp_random() & 0xFFFF); // improves randonmess +#endif if (SEGENV.aux0 < 2) { //FLARE if (SEGENV.aux0 == 0) { //init flare @@ -3708,7 +3723,7 @@ uint16_t mode_exploding_fireworks(void) flare->pos += flare->vel; flare->posX += flare->velX; flare->pos = constrain(flare->pos, 0, rows-1); - flare->posX = constrain(flare->posX, 0, cols-strip.isMatrix); + flare->posX = constrain(flare->posX, 0, cols-int(strip.isMatrix)); flare->vel += gravity; flare->col -= 2; } else { @@ -3738,10 +3753,10 @@ uint16_t mode_exploding_fireworks(void) sparks[i].colIndex = random8(); sparks[i].vel *= flare->pos/rows; // proportional to height sparks[i].velX *= strip.isMatrix ? flare->posX/cols : 0; // proportional to width - sparks[i].vel *= -gravity *50; + sparks[i].vel *= -gravity *50.0f; } //sparks[1].col = 345; // this will be our known spark - *dying_gravity = gravity/2; + *dying_gravity = gravity/2.0f; SEGENV.aux0 = 3; } diff --git a/wled00/FX.h b/wled00/FX.h index 5e8ae60acd..e09246953a 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -94,7 +94,7 @@ bool strip_uses_global_leds(void) __attribute__((pure)); // WLEDMM implemented #define SEGCOLOR(x) strip.segColor(x) /* saves us a few kbytes of code */ #define SEGPALETTE Segment::getCurrentPalette() #define SEGLEN strip._virtualSegmentLength /* saves us a few kbytes of code */ -#define SPEED_FORMULA_L (5U + (50U*(255U - SEGMENT.speed))/SEGLEN) +#define SPEED_FORMULA_L (4U + (50U*(255U - SEGMENT.speed))/min(SEGLEN, uint16_t(512))) // WLEDMM limiting the formula to 512 virtual pixels // some common colors #define RED (uint32_t)0xFF0000 diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 0d86f4b8a2..71339a380f 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -289,7 +289,7 @@ void Segment::resetIfRequired() { next_time = 0; step = 0; call = 0; aux0 = 0; aux1 = 0; reset = false; // setOption(SEG_OPTION_RESET, false); startFrame(); // WLEDMM update cached propoerties - if (isActive() && !freeze) fill(BLACK); // WLEDMM start clean + if (isActive() && !freeze) { fill(BLACK); needsBlank = false; } // WLEDMM start clean DEBUG_PRINTLN("Segment reset"); } else if (needsBlank) { startFrame(); // WLEDMM update cached propoerties diff --git a/wled00/bus_manager.cpp b/wled00/bus_manager.cpp index 5080c243c7..e320951ace 100644 --- a/wled00/bus_manager.cpp +++ b/wled00/bus_manager.cpp @@ -1266,7 +1266,11 @@ int BusManager::add(BusConfig &bc) { void BusManager::removeAll() { DEBUG_PRINTLN(F("Removing all.")); //prevents crashes due to deleting busses while in use. +#if !defined(ARDUINO_ARCH_ESP32) while (!canAllShow()) yield(); +#else + while (!canAllShow()) delay(2); // WLEDMM on esp32, yield() doesn't work as you think it would +#endif for (uint8_t i = 0; i < numBusses; i++) delete busses[i]; numBusses = 0; // WLEDMM clear cached Bus info @@ -1277,6 +1281,10 @@ void BusManager::removeAll() { void __attribute__((hot)) BusManager::show() { for (unsigned i = 0; i < numBusses; i++) { +#if 1 && defined(ARDUINO_ARCH_ESP32) + unsigned long t0 = millis(); + while ((busses[i]->canShow() == false) && (millis() - t0 < 80)) delay(1); // WLEDMM experimental: wait until bus driver is ready (max 80ms) - costs us 1-2 fps but reduces flickering +#endif busses[i]->show(); } } diff --git a/wled00/data/index.css b/wled00/data/index.css index 617f971bd0..deb0cc64e7 100644 --- a/wled00/data/index.css +++ b/wled00/data/index.css @@ -665,6 +665,12 @@ button { color: #f00; } +#heartMM { + transition: color 0.9s; + font-size: 16px; + color: #0f0; +} + img { max-width: 100%; max-height: 100%; diff --git a/wled00/data/index.htm b/wled00/data/index.htm index e0c9ca547c..57fca4cf8e 100644 --- a/wled00/data/index.htm +++ b/wled00/data/index.htm @@ -389,7 +389,7 @@
WLED made with ❤︎ by Aircoookie and the WLED community
- WLED MM made with ❤︎ by Softhack007 & Ewowi and the WLED 2D & Audio Dev community + WLED MM made with ❤︎ by Softhack007 & Ewowi and the WLED 2D & Audio Dev community