CustomEffects as usermod: step 4: modify wledv123.json, add drawLine/Arc
General (for CE, but also used by M12_pArc) - add drawArc Custom Effects - add WLEDSR Custom Effects comment to places in WLED where it is hooked in - move from wled.json to wledv123.json - rename matrixWidth/Heigth to width/height and use virtualWidth/Height - remove setPixels - add drawLine / drawArc
This commit is contained in:
@@ -32,9 +32,9 @@
|
|||||||
; default_envs = esp8285_4CH_MagicHome
|
; default_envs = esp8285_4CH_MagicHome
|
||||||
; default_envs = esp8285_H801
|
; default_envs = esp8285_H801
|
||||||
; default_envs = d1_mini_5CH_Shojo_PCB
|
; default_envs = d1_mini_5CH_Shojo_PCB
|
||||||
; default_envs = esp32mdev
|
default_envs = esp32mdev
|
||||||
; default_envs = esp8266mdev
|
; default_envs = esp8266mdev
|
||||||
default_envs = wemos_shield_esp32
|
; default_envs = wemos_shield_esp32
|
||||||
; default_envs = m5atom
|
; default_envs = m5atom
|
||||||
; default_envs = esp32_eth
|
; default_envs = esp32_eth
|
||||||
; default_envs = esp32dev_qio80
|
; default_envs = esp32dev_qio80
|
||||||
@@ -454,7 +454,7 @@ build_flags = ${common.build_flags_esp32}
|
|||||||
-D USERMOD_CUSTOMEFFECTS
|
-D USERMOD_CUSTOMEFFECTS
|
||||||
lib_deps = ${esp32.lib_deps}
|
lib_deps = ${esp32.lib_deps}
|
||||||
https://github.com/blazoncek/arduinoFFT.git ; arduinoFFT @ 1.5.6
|
https://github.com/blazoncek/arduinoFFT.git ; arduinoFFT @ 1.5.6
|
||||||
; monitor_filters = esp32_exception_decoder
|
monitor_filters = esp32_exception_decoder
|
||||||
board_build.partitions = ${esp32.default_partitions}
|
board_build.partitions = ${esp32.default_partitions}
|
||||||
|
|
||||||
[env:esp8266mdev]
|
[env:esp8266mdev]
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
@title Arduino Real Time Interpreter (ARTI)
|
@title Arduino Real Time Interpreter (ARTI)
|
||||||
@file arti.h
|
@file arti.h
|
||||||
@version 0.3.1
|
|
||||||
@date 20220818
|
@date 20220818
|
||||||
@author Ewoud Wijma
|
@author Ewoud Wijma
|
||||||
@repo https://github.com/ewoudwijma/ARTI
|
@repo https://github.com/ewoudwijma/ARTI
|
||||||
@@ -2474,7 +2473,7 @@ public:
|
|||||||
|
|
||||||
if (!definitionFile)
|
if (!definitionFile)
|
||||||
{
|
{
|
||||||
ERROR_ARTI("Definition file %s not found. Press Download wled.json\n", definitionName);
|
ERROR_ARTI("Definition file %s not found. Press Download wled json\n", definitionName);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2504,9 +2503,9 @@ public:
|
|||||||
JsonObject::iterator objectIterator = definitionJson.begin();
|
JsonObject::iterator objectIterator = definitionJson.begin();
|
||||||
JsonObject metaData = objectIterator->value();
|
JsonObject metaData = objectIterator->value();
|
||||||
const char * version = metaData["version"];
|
const char * version = metaData["version"];
|
||||||
if (strcmp(version, "0.3.1") != 0)
|
if (strcmp(version, "v032") != 0)
|
||||||
{
|
{
|
||||||
ERROR_ARTI("Version of definition.json file (%s) should be 0.3.1.\nPress Download wled.json\n", version);
|
ERROR_ARTI("Version of definition.json file (%s) should be v032.\nPress Download wled json\n", version);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
const char * startNode = metaData["start"];
|
const char * startNode = metaData["start"];
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
@title Arduino Real Time Interpreter (ARTI)
|
@title Arduino Real Time Interpreter (ARTI)
|
||||||
@file arti_wled_plugin.h
|
@file arti_wled_plugin.h
|
||||||
@version 0.3.1
|
|
||||||
@date 20220818
|
@date 20220818
|
||||||
@author Ewoud Wijma
|
@author Ewoud Wijma
|
||||||
@repo https://github.com/ewoudwijma/ARTI
|
@repo https://github.com/ewoudwijma/ARTI
|
||||||
@@ -28,15 +27,14 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//make sure the numbers here correspond to the order in which these functions are defined in wled.json!!
|
//make sure the numbers here correspond to the order in which these functions are defined in wled000.json!!
|
||||||
enum Externals
|
enum Externals
|
||||||
{
|
{
|
||||||
F_ledCount,
|
F_ledCount,
|
||||||
F_matrixWidth,
|
F_width,
|
||||||
F_matrixHeight,
|
F_height,
|
||||||
F_setPixelColor,
|
F_setPixelColor,
|
||||||
F_leds,
|
F_leds,
|
||||||
F_setPixels,
|
|
||||||
F_hsv,
|
F_hsv,
|
||||||
F_rgbw,
|
F_rgbw,
|
||||||
|
|
||||||
@@ -61,6 +59,8 @@ enum Externals
|
|||||||
|
|
||||||
F_shift,
|
F_shift,
|
||||||
F_circle2D,
|
F_circle2D,
|
||||||
|
F_drawLine,
|
||||||
|
F_drawArc,
|
||||||
|
|
||||||
F_constrain,
|
F_constrain,
|
||||||
F_map,
|
F_map,
|
||||||
@@ -103,14 +103,11 @@ float ARTI::arti_external_function(uint8_t function, float par1, float par2, flo
|
|||||||
SEGMENT.setPixelColorXY((uint16_t)par1, (uint16_t)par2, (uint32_t)par3);
|
SEGMENT.setPixelColorXY((uint16_t)par1, (uint16_t)par2, (uint32_t)par3);
|
||||||
return floatNull;
|
return floatNull;
|
||||||
}
|
}
|
||||||
case F_setPixels:
|
|
||||||
// setPixels(leds); No action needed as allready stored via sPC
|
|
||||||
return floatNull;
|
|
||||||
case F_hsv:
|
case F_hsv:
|
||||||
{
|
{
|
||||||
CRGB color = CHSV((uint8_t)par1, (uint8_t)par2, (uint8_t)par3);
|
CRGB color = CHSV((uint8_t)par1, (uint8_t)par2, (uint8_t)par3);
|
||||||
return RGBW32(color.r, color.g, color.b, 0);
|
return RGBW32(color.r, color.g, color.b, 0);
|
||||||
}
|
}
|
||||||
case F_rgbw:
|
case F_rgbw:
|
||||||
return RGBW32((uint8_t)par1, (uint8_t)par2, (uint8_t)par3, (uint8_t)par4);
|
return RGBW32((uint8_t)par1, (uint8_t)par2, (uint8_t)par3, (uint8_t)par4);
|
||||||
|
|
||||||
@@ -174,7 +171,15 @@ float ARTI::arti_external_function(uint8_t function, float par1, float par2, flo
|
|||||||
int y = round(round((halfLength - cos(radians(par1)) * halfLength) * 10)/10) + deltaHeight;
|
int y = round(round((halfLength - cos(radians(par1)) * halfLength) * 10)/10) + deltaHeight;
|
||||||
return SEGMENT.XY(x,y);
|
return SEGMENT.XY(x,y);
|
||||||
}
|
}
|
||||||
|
case F_drawLine:
|
||||||
|
SEGMENT.drawLine(par1, par2, par3, par4, par5);
|
||||||
|
return floatNull;
|
||||||
|
case F_drawArc:
|
||||||
|
if (par5 == floatNull)
|
||||||
|
SEGMENT.drawArc(par1, par2, par3, par4);
|
||||||
|
else
|
||||||
|
SEGMENT.drawArc(par1, par2, par3, par4, par5); //fillColor
|
||||||
|
return floatNull;
|
||||||
case F_constrain:
|
case F_constrain:
|
||||||
return constrain(par1, par2, par3);
|
return constrain(par1, par2, par3);
|
||||||
case F_map:
|
case F_map:
|
||||||
@@ -196,9 +201,6 @@ float ARTI::arti_external_function(uint8_t function, float par1, float par2, flo
|
|||||||
case F_setPixelColor:
|
case F_setPixelColor:
|
||||||
PRINT_ARTI("%s(%f, %f, %f)\n", "setPixelColor", par1, par2, par3);
|
PRINT_ARTI("%s(%f, %f, %f)\n", "setPixelColor", par1, par2, par3);
|
||||||
return floatNull;
|
return floatNull;
|
||||||
case F_setPixels:
|
|
||||||
PRINT_ARTI("%s\n", "setPixels(leds)");
|
|
||||||
return floatNull;
|
|
||||||
case F_hsv:
|
case F_hsv:
|
||||||
PRINT_ARTI("%s(%f, %f, %f)\n", "hsv", par1, par2, par3);
|
PRINT_ARTI("%s(%f, %f, %f)\n", "hsv", par1, par2, par3);
|
||||||
return par1 + par2 + par3;
|
return par1 + par2 + par3;
|
||||||
@@ -235,6 +237,10 @@ float ARTI::arti_external_function(uint8_t function, float par1, float par2, flo
|
|||||||
case F_circle2D:
|
case F_circle2D:
|
||||||
PRINT_ARTI("%s(%f)\n", "circle2D", par1);
|
PRINT_ARTI("%s(%f)\n", "circle2D", par1);
|
||||||
return par1 / 2;
|
return par1 / 2;
|
||||||
|
case F_drawLine:
|
||||||
|
return par1 + par2 + par3 + par4 + par5;
|
||||||
|
case F_drawArc:
|
||||||
|
return par1 + par2 + par3 + par4 + par5;
|
||||||
|
|
||||||
case F_constrain:
|
case F_constrain:
|
||||||
return par1 + par2 + par3;
|
return par1 + par2 + par3;
|
||||||
@@ -317,10 +323,10 @@ float ARTI::arti_get_external_variable(uint8_t variable, float par1, float par2,
|
|||||||
{
|
{
|
||||||
case F_ledCount:
|
case F_ledCount:
|
||||||
return SEGLEN;
|
return SEGLEN;
|
||||||
case F_matrixWidth:
|
case F_width:
|
||||||
return strip.matrixWidth;
|
return SEGMENT.virtualWidth();
|
||||||
case F_matrixHeight:
|
case F_height:
|
||||||
return strip.matrixHeight;
|
return SEGMENT.virtualHeight();
|
||||||
case F_leds:
|
case F_leds:
|
||||||
if (par1 == floatNull) {
|
if (par1 == floatNull) {
|
||||||
ERROR_ARTI("arti_get_external_variable leds without indices not supported yet (get leds)\n");
|
ERROR_ARTI("arti_get_external_variable leds without indices not supported yet (get leds)\n");
|
||||||
@@ -367,9 +373,9 @@ float ARTI::arti_get_external_variable(uint8_t variable, float par1, float par2,
|
|||||||
{
|
{
|
||||||
case F_ledCount:
|
case F_ledCount:
|
||||||
return 3; // used in testing e.g. for i = 1 to ledCount
|
return 3; // used in testing e.g. for i = 1 to ledCount
|
||||||
case F_matrixWidth:
|
case F_width:
|
||||||
return 2;
|
return 2;
|
||||||
case F_matrixHeight:
|
case F_height:
|
||||||
return 4;
|
return 4;
|
||||||
case F_leds:
|
case F_leds:
|
||||||
if (par1 == floatNull) {
|
if (par1 == floatNull) {
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ function populateCEEditor(name, segID)
|
|||||||
<button class="btn infobtn" onclick="saveCE('${name}.wled', ${segID})">Save and Run</button><br>
|
<button class="btn infobtn" onclick="saveCE('${name}.wled', ${segID})">Save and Run</button><br>
|
||||||
<button class="btn infobtn" onclick="downloadCEFile('${name}.wled')">Download ${name}.wled</button>
|
<button class="btn infobtn" onclick="downloadCEFile('${name}.wled')">Download ${name}.wled</button>
|
||||||
<button class="btn infobtn" onclick="loadCETemplate('${name}')">Load template</button><br>
|
<button class="btn infobtn" onclick="loadCETemplate('${name}')">Load template</button><br>
|
||||||
<button class="btn infobtn" onclick="downloadCEFile('wled.json')">Download wled.json</button>
|
<button class="btn infobtn" onclick="downloadCEFile('wledv032.json')">Download wled json</button>
|
||||||
<button class="btn infobtn" onclick="downloadCEFile('presets.json')">Download presets.json</button><br>
|
<button class="btn infobtn" onclick="downloadCEFile('presets.json')">Download presets.json</button><br>
|
||||||
<a href="https://github.com/MoonModules/WLED-Effects/tree/master/CustomEffects/wled" target="_blank">Custom Effects Library</a><br>
|
<a href="https://github.com/MoonModules/WLED-Effects/tree/master/CustomEffects/wled" target="_blank">Custom Effects Library</a><br>
|
||||||
<a href="https://github.com/atuline/WLED/wiki/WLED-Custom-effects" target="_blank">Custom Effects Help</a><br>
|
<a href="https://github.com/atuline/WLED/wiki/WLED-Custom-effects" target="_blank">Custom Effects Help</a><br>
|
||||||
@@ -122,7 +122,7 @@ function downloadCEFile(name) {
|
|||||||
|
|
||||||
fetchAndExecute(url, name, function(text) {
|
fetchAndExecute(url, name, function(text) {
|
||||||
console.log(text);
|
console.log(text);
|
||||||
if (name == "wled.json" || name == "presets.json") {
|
if (name == "wledv032.json" || name == "presets.json") {
|
||||||
if (!confirm('Are you sure to download/overwrite ' + name + '?'))
|
if (!confirm('Are you sure to download/overwrite ' + name + '?'))
|
||||||
return;
|
return;
|
||||||
uploadFileWithText("/" + name, text);
|
uploadFileWithText("/" + name, text);
|
||||||
@@ -138,7 +138,7 @@ function downloadCEFile(name) {
|
|||||||
|
|
||||||
var request = new XMLHttpRequest();
|
var request = new XMLHttpRequest();
|
||||||
request.onload = function() {
|
request.onload = function() {
|
||||||
if (name == "wled.json" || name == "presets.json") {
|
if (name == "wledv032.json" || name == "presets.json") {
|
||||||
if (!confirm('Are you sure to download ' + name + '?'))
|
if (!confirm('Are you sure to download ' + name + '?'))
|
||||||
return;
|
return;
|
||||||
uploadFileWithText("/" + name, request.response);
|
uploadFileWithText("/" + name, request.response);
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ uint16_t mode_customEffect(void) {
|
|||||||
strcat(programFileName, currentEffect);
|
strcat(programFileName, currentEffect);
|
||||||
strcat(programFileName, ".wled");
|
strcat(programFileName, ".wled");
|
||||||
|
|
||||||
succesful = arti->setup("/wled.json", programFileName);
|
succesful = arti->setup("/wledv032.json", programFileName);
|
||||||
|
|
||||||
if (!succesful)
|
if (!succesful)
|
||||||
ERROR_ARTI("Setup not succesful\n");
|
ERROR_ARTI("Setup not succesful\n");
|
||||||
@@ -89,7 +89,7 @@ uint16_t mode_customEffect(void) {
|
|||||||
return FRAMETIME;
|
return FRAMETIME;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char _data_FX_MODE_CUSTOMEFFECT[] PROGMEM = " ⚙️ Custom Effect@Speed,Intensity,Custom 1, Custom 2, Custom 3;!;!";
|
static const char _data_FX_MODE_CUSTOMEFFECT[] PROGMEM = "⚙️ Custom Effect@Speed,Intensity,Custom 1, Custom 2, Custom 3;!;!;mp12=0,1d";
|
||||||
|
|
||||||
class CustomEffectsUserMod : public Usermod {
|
class CustomEffectsUserMod : public Usermod {
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -596,6 +596,8 @@ typedef struct Segment {
|
|||||||
void fill_circle(uint16_t cx, uint16_t cy, uint8_t radius, CRGB c);
|
void fill_circle(uint16_t cx, uint16_t cy, uint8_t radius, CRGB c);
|
||||||
void drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint32_t c);
|
void drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint32_t c);
|
||||||
void drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, CRGB c) { drawLine(x0, y0, x1, y1, RGBW32(c.r,c.g,c.b,0)); } // automatic inline
|
void drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, CRGB c) { drawLine(x0, y0, x1, y1, RGBW32(c.r,c.g,c.b,0)); } // automatic inline
|
||||||
|
void drawArc(uint16_t x0, uint16_t y0, uint16_t radius, uint32_t color, uint32_t fillColor = 0);
|
||||||
|
void drawArc(uint16_t x0, uint16_t y0, uint16_t radius, CRGB color, CRGB fillColor = BLACK) { drawArc(x0, y0, radius, RGBW32(color.r,color.g,color.b,0), RGBW32(fillColor.r,fillColor.g,fillColor.b,0)); } // automatic inline
|
||||||
void drawCharacter(unsigned char chr, int16_t x, int16_t y, uint8_t w, uint8_t h, uint32_t color);
|
void drawCharacter(unsigned char chr, int16_t x, int16_t y, uint8_t w, uint8_t h, uint32_t color);
|
||||||
void drawCharacter(unsigned char chr, int16_t x, int16_t y, uint8_t w, uint8_t h, CRGB c) { drawCharacter(chr, x, y, w, h, RGBW32(c.r,c.g,c.b,0)); } // automatic inline
|
void drawCharacter(unsigned char chr, int16_t x, int16_t y, uint8_t w, uint8_t h, CRGB c) { drawCharacter(chr, x, y, w, h, RGBW32(c.r,c.g,c.b,0)); } // automatic inline
|
||||||
void wu_pixel(uint32_t x, uint32_t y, CRGB c);
|
void wu_pixel(uint32_t x, uint32_t y, CRGB c);
|
||||||
|
|||||||
@@ -459,6 +459,29 @@ void Segment::drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint3
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Segment::drawArc(uint16_t x0, uint16_t y0, uint16_t radius, uint32_t color, uint32_t fillColor) {
|
||||||
|
// float step = degrees / (2.85f*MAX(radius,1));
|
||||||
|
// for (float rad = 0.0f; rad <= degrees+step/2; rad += step) {
|
||||||
|
// // may want to try float version as well (with or without antialiasing)
|
||||||
|
// int x = roundf(sin_t(rad) * radius);
|
||||||
|
// int y = roundf(cos_t(rad) * radius);
|
||||||
|
// setPixelColorXY(x+x0, y+y0, c);
|
||||||
|
// }
|
||||||
|
float minradius = radius - .5;
|
||||||
|
float maxradius = radius + .5;
|
||||||
|
for (int x=0; x<virtualWidth(); x++) for (int y=0; y<virtualHeight(); y++) {
|
||||||
|
|
||||||
|
int newX = x - x0;
|
||||||
|
int newY = y - y0;
|
||||||
|
|
||||||
|
if (newX*newX + newY*newY >= minradius * minradius && newX*newX + newY*newY <= maxradius * maxradius)
|
||||||
|
setPixelColorXY(x, y, color);
|
||||||
|
if (fillColor != 0)
|
||||||
|
if (newX*newX + newY*newY < minradius * minradius)
|
||||||
|
setPixelColorXY(x, y, fillColor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#include "console_font_5x8.h"
|
#include "console_font_5x8.h"
|
||||||
#include "console_font_5x12.h"
|
#include "console_font_5x12.h"
|
||||||
#include "console_font_6x8.h"
|
#include "console_font_6x8.h"
|
||||||
|
|||||||
@@ -466,15 +466,8 @@ void IRAM_ATTR Segment::setPixelColor(int i, uint32_t col)
|
|||||||
// expand in circular fashion from center
|
// expand in circular fashion from center
|
||||||
if (i==0)
|
if (i==0)
|
||||||
setPixelColorXY(0, 0, col);
|
setPixelColorXY(0, 0, col);
|
||||||
else {
|
else
|
||||||
float step = HALF_PI / (2.85f*i);
|
drawArc(0, 0, i, col);
|
||||||
for (float rad = 0.0f; rad <= HALF_PI+step/2; rad += step) {
|
|
||||||
// may want to try float version as well (with or without antialiasing)
|
|
||||||
int x = roundf(sin_t(rad) * i);
|
|
||||||
int y = roundf(cos_t(rad) * i);
|
|
||||||
setPixelColorXY(x, y, col);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case M12_pCorner:
|
case M12_pCorner:
|
||||||
for (int x = 0; x <= i; x++) setPixelColorXY(x, i, col);
|
for (int x = 0; x <= i; x++) setPixelColorXY(x, i, col);
|
||||||
|
|||||||
@@ -80,7 +80,7 @@
|
|||||||
#define USERMOD_ID_SI7021_MQTT_HA 29 //Usermod "usermod_si7021_mqtt_ha.h"
|
#define USERMOD_ID_SI7021_MQTT_HA 29 //Usermod "usermod_si7021_mqtt_ha.h"
|
||||||
#define USERMOD_ID_BME280 30 //Usermod "usermod_bme280.h
|
#define USERMOD_ID_BME280 30 //Usermod "usermod_bme280.h
|
||||||
#define USERMOD_ID_AUDIOREACTIVE 31 //Usermod "audioreactive.h"
|
#define USERMOD_ID_AUDIOREACTIVE 31 //Usermod "audioreactive.h"
|
||||||
#define USERMOD_ID_CUSTOMEFFECTS 32 //Usermod "usermod_v2_customeffects.h"
|
#define USERMOD_ID_CUSTOMEFFECTS 32 //Usermod "usermod_v2_customeffects.h" WLEDSR Custom Effects
|
||||||
|
|
||||||
//Access point behavior
|
//Access point behavior
|
||||||
#define AP_BEHAVIOR_BOOT_NO_CONN 0 //Open AP when no connection after boot
|
#define AP_BEHAVIOR_BOOT_NO_CONN 0 //Open AP when no connection after boot
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
setTimeout(()=>{h.appendChild(l)},100);
|
setTimeout(()=>{h.appendChild(l)},100);
|
||||||
</script>
|
</script>
|
||||||
<link rel="stylesheet" href="index.css">
|
<link rel="stylesheet" href="index.css">
|
||||||
<link rel="stylesheet" href="../../usermods/customeffects/customeffects.css">
|
<link rel="stylesheet" href="../../usermods/customeffects/customeffects.css"> <!--WLEDSR Custom Effects -->
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
@@ -386,6 +386,6 @@
|
|||||||
</div>
|
</div>
|
||||||
<i id="roverstar" class="icons huge" onclick="setLor(0)"></i><br>
|
<i id="roverstar" class="icons huge" onclick="setLor(0)"></i><br>
|
||||||
<script src="index.js"></script>
|
<script src="index.js"></script>
|
||||||
<script src="../../usermods/customeffects/customeffects.js"></script>
|
<script src="../../usermods/customeffects/customeffects.js"></script> <!--WLEDSR Custom Effects-->
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -728,6 +728,7 @@ function populateSegments(s)
|
|||||||
<option value="3" ${inst.ssim==3?' selected':''}>U14_3</option>
|
<option value="3" ${inst.ssim==3?' selected':''}>U14_3</option>
|
||||||
</select></div>
|
</select></div>
|
||||||
</div>`;
|
</div>`;
|
||||||
|
//WLEDSR Custom Effects
|
||||||
let cusEff = `<button class="btn" onclick="toggleCEEditor('${inst.n?inst.n:"default"}', ${i})">Custom Effect Editor</button><br>`;
|
let cusEff = `<button class="btn" onclick="toggleCEEditor('${inst.n?inst.n:"default"}', ${i})">Custom Effect Editor</button><br>`;
|
||||||
cn += `<div class="seg lstI ${i==s.mainseg ? 'selected' : ''} ${exp ? "expanded":""}" id="seg${i}">
|
cn += `<div class="seg lstI ${i==s.mainseg ? 'selected' : ''} ${exp ? "expanded":""}" id="seg${i}">
|
||||||
<label class="check schkl">
|
<label class="check schkl">
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// Autogenerated from wled00/data/index.htm, do not edit!!
|
// Autogenerated from wled00/data/index.htm, do not edit!!
|
||||||
const uint16_t PAGE_index_L = 31018;
|
const uint16_t PAGE_index_L = 31025;
|
||||||
const uint8_t PAGE_index[] PROGMEM = {
|
const uint8_t PAGE_index[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xd4, 0xbd, 0x69, 0x7a, 0xdb, 0xba,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xd4, 0xbd, 0x69, 0x7a, 0xdb, 0xba,
|
||||||
0xd2, 0x30, 0xf8, 0xdf, 0xab, 0x60, 0x98, 0x73, 0x13, 0xe9, 0x88, 0x96, 0xa8, 0xd1, 0x1a, 0x22,
|
0xd2, 0x30, 0xf8, 0xdf, 0xab, 0x60, 0x98, 0x73, 0x13, 0xe9, 0x88, 0x96, 0xa8, 0xd1, 0x1a, 0x22,
|
||||||
@@ -1923,29 +1923,30 @@ const uint8_t PAGE_index[] PROGMEM = {
|
|||||||
0xed, 0xa0, 0x23, 0xf0, 0x32, 0x08, 0xbf, 0x0a, 0x43, 0xad, 0x7f, 0xbe, 0x4b, 0x0d, 0xe0, 0x80,
|
0xed, 0xa0, 0x23, 0xf0, 0x32, 0x08, 0xbf, 0x0a, 0x43, 0xad, 0x7f, 0xbe, 0x4b, 0x0d, 0xe0, 0x80,
|
||||||
0xcf, 0x92, 0x1c, 0x97, 0x71, 0xd4, 0x82, 0x97, 0xaf, 0x49, 0x09, 0x8c, 0xe2, 0xa0, 0xa0, 0x57,
|
0xcf, 0x92, 0x1c, 0x97, 0x71, 0xd4, 0x82, 0x97, 0xaf, 0x49, 0x09, 0x8c, 0xe2, 0xa0, 0xa0, 0x57,
|
||||||
0xe2, 0x61, 0xc7, 0x68, 0xf4, 0xcf, 0xaf, 0x11, 0x17, 0xf3, 0x3e, 0xbe, 0xcd, 0x51, 0x97, 0xb8,
|
0xe2, 0x61, 0xc7, 0x68, 0xf4, 0xcf, 0xaf, 0x11, 0x17, 0xf3, 0x3e, 0xbe, 0xcd, 0x51, 0x97, 0xb8,
|
||||||
0x28, 0x2c, 0x05, 0x2f, 0x35, 0x74, 0x2a, 0x91, 0xfc, 0x67, 0xd7, 0x07, 0x85, 0xa6, 0xe3, 0x19,
|
0x28, 0x2c, 0x05, 0x2f, 0x35, 0x74, 0x2a, 0x91, 0xfc, 0x67, 0xd7, 0x07, 0x85, 0xfe, 0x18, 0x1e,
|
||||||
0xab, 0x3e, 0x2a, 0xf5, 0x4b, 0xea, 0xe3, 0x16, 0x25, 0x20, 0x43, 0x9a, 0xa5, 0x99, 0x0f, 0x96,
|
0x1e, 0xd0, 0x11, 0x8d, 0x55, 0x27, 0x7c, 0xd2, 0xc1, 0xd4, 0x2f, 0xa9, 0x93, 0x5b, 0x9c, 0x80,
|
||||||
0xd5, 0x6f, 0xd4, 0xe1, 0x13, 0xde, 0x96, 0xa3, 0xf4, 0x9f, 0xb2, 0x2c, 0x05, 0xcb, 0xf6, 0x2e,
|
0x0d, 0x69, 0x96, 0x66, 0x3e, 0x58, 0x56, 0xc7, 0x51, 0x87, 0x4f, 0x79, 0x5b, 0x8e, 0xd3, 0x7f,
|
||||||
0x89, 0x4b, 0x3a, 0x4b, 0xdf, 0x15, 0x23, 0x65, 0xbf, 0x2a, 0xe2, 0x78, 0xff, 0x16, 0x66, 0x9f,
|
0xca, 0xb2, 0x14, 0xac, 0xdb, 0xbb, 0x24, 0x2e, 0xe9, 0x3c, 0x7d, 0x57, 0x8c, 0x96, 0xfd, 0xaa,
|
||||||
0xb8, 0xd8, 0xe7, 0x41, 0x24, 0x9f, 0xd0, 0x60, 0xeb, 0xf0, 0xee, 0x3f, 0xf2, 0xfe, 0x29, 0x28,
|
0x88, 0xe3, 0xfd, 0x5b, 0x98, 0x81, 0xe2, 0x62, 0x9f, 0x07, 0x92, 0x7c, 0x42, 0x03, 0xae, 0xc3,
|
||||||
0x9a, 0x9c, 0x81, 0xf6, 0x76, 0x36, 0x2e, 0x46, 0xc5, 0xa7, 0xa3, 0xfd, 0xd1, 0x86, 0x02, 0xb5,
|
0x1e, 0x80, 0xc8, 0xfb, 0xa7, 0xa0, 0x69, 0x72, 0x06, 0xdb, 0xdb, 0xd9, 0xb8, 0x18, 0x15, 0x9f,
|
||||||
0x9d, 0xed, 0xb3, 0x64, 0x5c, 0xc2, 0x6e, 0xcc, 0x25, 0xac, 0x94, 0xe0, 0xc7, 0x38, 0xc9, 0x17,
|
0x8e, 0xf6, 0x47, 0x1b, 0x0a, 0xd4, 0x76, 0xbe, 0xcf, 0x92, 0x71, 0x09, 0xbb, 0x31, 0x97, 0xb0,
|
||||||
0x14, 0x8f, 0xe8, 0x70, 0xb3, 0x21, 0x52, 0xfc, 0xa2, 0x91, 0x21, 0x14, 0xbe, 0x03, 0xf3, 0xd5,
|
0x52, 0x82, 0x1f, 0xe3, 0x24, 0x5f, 0x50, 0x3c, 0x22, 0xc4, 0xcd, 0x86, 0x48, 0xf3, 0x8b, 0x86,
|
||||||
0x67, 0x0f, 0x7d, 0x39, 0x27, 0x0e, 0x97, 0x0f, 0xf9, 0xd9, 0x10, 0x0b, 0xc2, 0x35, 0x77, 0xd8,
|
0x86, 0x50, 0xfa, 0x0e, 0xcc, 0x59, 0x9f, 0x3d, 0xfc, 0xe5, 0xbc, 0x38, 0x5c, 0x3e, 0xec, 0x67,
|
||||||
0x39, 0x94, 0x8b, 0x2c, 0x98, 0x8a, 0x1d, 0x5c, 0x08, 0x30, 0xb2, 0xfd, 0x2c, 0x2e, 0x66, 0xa3,
|
0x43, 0x2c, 0x08, 0xd7, 0xdd, 0x61, 0xe7, 0x50, 0x2e, 0xb4, 0x60, 0x2e, 0x76, 0x70, 0x31, 0xc0,
|
||||||
0xa4, 0xf3, 0xf7, 0xbb, 0xfc, 0xae, 0xda, 0x43, 0x69, 0x2e, 0x07, 0x2d, 0x84, 0x5a, 0x86, 0x09,
|
0xe8, 0xf6, 0xb3, 0xb8, 0x98, 0x8d, 0x92, 0xce, 0xdf, 0xef, 0xf2, 0xbb, 0x6a, 0x0f, 0xa5, 0xb9,
|
||||||
0xa7, 0x9d, 0x70, 0xe9, 0xda, 0x93, 0xb5, 0x3b, 0x39, 0x93, 0xd2, 0xca, 0x19, 0xda, 0x5c, 0xe6,
|
0x1c, 0xb4, 0x90, 0x6a, 0x19, 0x66, 0x9c, 0x76, 0xc4, 0xa5, 0x6b, 0x4f, 0xd8, 0xee, 0x04, 0x8d,
|
||||||
0x1d, 0x45, 0x54, 0x8e, 0x10, 0xd5, 0x6f, 0xc5, 0xe8, 0x7e, 0x8f, 0xfb, 0x0e, 0xac, 0xe7, 0x42,
|
0x1d, 0xaa, 0x66, 0x69, 0x73, 0xa9, 0x77, 0x14, 0x51, 0x39, 0x43, 0x54, 0xbf, 0x15, 0xa3, 0xfb,
|
||||||
0x38, 0x2a, 0x96, 0xeb, 0xd5, 0x42, 0x95, 0xda, 0xf7, 0x1a, 0xf6, 0x52, 0x65, 0xd9, 0x44, 0xbc,
|
0x3d, 0xee, 0x3b, 0xb0, 0xa0, 0x0b, 0xe1, 0xac, 0x58, 0xae, 0x57, 0x0b, 0x55, 0x6a, 0xdf, 0x6b,
|
||||||
0x97, 0xc2, 0xcd, 0x50, 0x06, 0x56, 0x2b, 0xc8, 0x8b, 0xc4, 0x87, 0x9e, 0x1a, 0x71, 0x1e, 0x01,
|
0xd8, 0x4c, 0x95, 0x65, 0x17, 0xf1, 0x7e, 0x0a, 0x37, 0x44, 0x19, 0x58, 0xae, 0x20, 0x2f, 0x92,
|
||||||
0x0d, 0x7a, 0xe6, 0x98, 0xe0, 0x78, 0x61, 0x0a, 0x4f, 0xe0, 0x48, 0x83, 0xae, 0x07, 0x8d, 0x81,
|
0x1f, 0x7a, 0xd6, 0x58, 0xf4, 0x08, 0x70, 0xd0, 0x33, 0xc7, 0x05, 0xc7, 0x0d, 0x53, 0x98, 0x02,
|
||||||
0x37, 0x4b, 0x3a, 0xe5, 0x5d, 0x41, 0x57, 0x09, 0x64, 0x15, 0xf7, 0x33, 0x05, 0x8f, 0x48, 0xd7,
|
0x47, 0x1c, 0x74, 0x3d, 0x68, 0x10, 0xbc, 0x61, 0xd2, 0x29, 0xef, 0x0a, 0xba, 0x52, 0x20, 0xab,
|
||||||
0x9d, 0x8e, 0x95, 0xb3, 0x6c, 0xf1, 0x42, 0x5a, 0xb1, 0x83, 0x74, 0xbe, 0x72, 0x2d, 0x16, 0x6d,
|
0xb9, 0x9f, 0x29, 0x98, 0x44, 0xba, 0xf6, 0x74, 0xac, 0x9c, 0x66, 0x8b, 0x17, 0xd4, 0x8a, 0x1d,
|
||||||
0x5f, 0xd9, 0xd7, 0xab, 0x9d, 0x69, 0x2b, 0xf6, 0xd7, 0xce, 0xe8, 0x72, 0xff, 0x1b, 0x56, 0x2c,
|
0xa5, 0xf3, 0x95, 0x6b, 0xb2, 0x68, 0xff, 0xca, 0xbe, 0x66, 0xed, 0x4c, 0x5f, 0xb1, 0xbf, 0x76,
|
||||||
0x47, 0xe5, 0x65, 0x5e, 0xf8, 0xf0, 0x9b, 0x7d, 0xfc, 0x6f, 0xce, 0x5f, 0xd3, 0x3c, 0x8b, 0x7f,
|
0x46, 0x97, 0xfb, 0xdf, 0xb0, 0x72, 0x39, 0x6a, 0x2f, 0xf3, 0xc2, 0x87, 0xdf, 0xec, 0xe3, 0x7f,
|
||||||
0xcf, 0xf9, 0x3b, 0x03, 0x18, 0x27, 0xbd, 0x8a, 0x8b, 0x37, 0xc8, 0xad, 0xd6, 0xf5, 0xf9, 0xd9,
|
0x73, 0xfe, 0x9a, 0xe6, 0x5b, 0xfc, 0x7b, 0xce, 0xdf, 0x19, 0x00, 0x39, 0xe9, 0x55, 0x5c, 0xbc,
|
||||||
0x5c, 0xea, 0x2c, 0x05, 0x90, 0x3d, 0xc4, 0x09, 0x07, 0x50, 0x11, 0x21, 0x50, 0x5c, 0x04, 0x1d,
|
0x41, 0x8e, 0xb5, 0xae, 0xcf, 0xcf, 0xe6, 0x52, 0x6f, 0x29, 0x90, 0xec, 0x21, 0x4e, 0x38, 0x90,
|
||||||
0x8a, 0xc2, 0x78, 0x53, 0x64, 0xb7, 0xf2, 0x9e, 0xa7, 0xf1, 0x84, 0x7e, 0xf8, 0x22, 0x23, 0x2a,
|
0x8a, 0x88, 0x81, 0xe2, 0x22, 0xe8, 0x50, 0x34, 0xc6, 0x9b, 0x22, 0xbb, 0x95, 0xf7, 0x3d, 0x8d,
|
||||||
0xb0, 0xbe, 0xac, 0xcd, 0x1d, 0xd2, 0x3e, 0x12, 0x84, 0xe2, 0xbf, 0x37, 0xd5, 0x6d, 0x32, 0xec,
|
0x27, 0xf4, 0xc3, 0x17, 0x19, 0x51, 0x81, 0xf5, 0x65, 0x6d, 0xee, 0x94, 0xf6, 0x91, 0x28, 0x14,
|
||||||
0xfc, 0x2f, 0x85, 0xf7, 0xca, 0x52, 0xc7, 0x82, 0x01, 0x00
|
0xff, 0xbd, 0xa9, 0x6e, 0x93, 0x61, 0xe7, 0x7f, 0x01, 0xaf, 0x15, 0x69, 0x9e, 0xcf, 0x82, 0x01,
|
||||||
|
0x00
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -139,6 +139,7 @@
|
|||||||
#include "../usermods/audioreactive/audio_reactive.h"
|
#include "../usermods/audioreactive/audio_reactive.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//WLEDSR Custom Effects
|
||||||
#ifdef USERMOD_CUSTOMEFFECTS
|
#ifdef USERMOD_CUSTOMEFFECTS
|
||||||
#include "../usermods/customeffects/usermod_v2_customeffects.h"
|
#include "../usermods/customeffects/usermod_v2_customeffects.h"
|
||||||
#endif
|
#endif
|
||||||
@@ -270,6 +271,7 @@ void registerUsermods()
|
|||||||
usermods.add(new AudioReactive());
|
usermods.add(new AudioReactive());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//WLEDSR Custom Effects
|
||||||
#ifdef USERMOD_CUSTOMEFFECTS
|
#ifdef USERMOD_CUSTOMEFFECTS
|
||||||
usermods.add(new CustomEffectsUserMod());
|
usermods.add(new CustomEffectsUserMod());
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user