Merge pull request #809 from raresserban/dmx_settings

DMX: Ability to work together with LEDs and set segment and start LED for fixtures
This commit is contained in:
Aircoookie 2020-04-10 12:52:22 +02:00 committed by GitHub
commit 3006d25406
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 425 additions and 405 deletions

View File

@ -2,6 +2,12 @@
### Development versions after 0.9.1 release ### Development versions after 0.9.1 release
#### Build 2004100
- Fixed DMX output compilation
- Added DMX start LED setting
#### Build 2004061 #### Build 2004061
- Fixed RBG and BGR getPixelColor (#825) - Fixed RBG and BGR getPixelColor (#825)

View File

@ -17,7 +17,7 @@ void handleDMX()
uint8_t brightness = strip.getBrightness(); uint8_t brightness = strip.getBrightness();
for (int i = 0; i < ledCount; i++) { // uses the amount of LEDs as fixture count for (int i = DMXStartLED; i < ledCount; i++) { // uses the amount of LEDs as fixture count
uint32_t in = strip.getPixelColor(i); // get the colors for the individual fixtures as suggested by Aircoookie in issue #462 uint32_t in = strip.getPixelColor(i); // get the colors for the individual fixtures as suggested by Aircoookie in issue #462
byte w = in >> 24 & 0xFF; byte w = in >> 24 & 0xFF;
@ -25,7 +25,7 @@ void handleDMX()
byte g = in >> 8 & 0xFF; byte g = in >> 8 & 0xFF;
byte b = in & 0xFF; byte b = in & 0xFF;
int DMXFixtureStart = DMXStart + (DMXGap * i); int DMXFixtureStart = DMXStart + (DMXGap * (i - DMXStartLED));
for (int j = 0; j < DMXChannels; j++) { for (int j = 0; j < DMXChannels; j++) {
int DMXAddr = DMXFixtureStart + j; int DMXAddr = DMXFixtureStart + j;
switch (DMXFixtureMap[j]) { switch (DMXFixtureMap[j]) {
@ -57,6 +57,11 @@ void handleDMX()
dmx.update(); // update the DMX bus dmx.update(); // update the DMX bus
} }
void initDMX() {
dmx.init(512); // initialize with bus length
}
#else #else
void handleDMX() {} void handleDMX() {}
void initDMX() {}
#endif #endif

View File

@ -37,15 +37,16 @@ void colorRGBtoXY(byte* rgb, float* xy); // only defined if huesync disabled TOD
void colorFromDecOrHexString(byte* rgb, char* in); void colorFromDecOrHexString(byte* rgb, char* in);
void colorRGBtoRGBW(byte* rgb); //rgb to rgbw (http://codewelt.com/rgbw). (RGBW_MODE_LEGACY) void colorRGBtoRGBW(byte* rgb); //rgb to rgbw (http://codewelt.com/rgbw). (RGBW_MODE_LEGACY)
//dmx.cpp
void initDMX();
void handleDMX();
//e131.cpp //e131.cpp
void handleE131Packet(e131_packet_t* p, IPAddress clientIP); void handleE131Packet(e131_packet_t* p, IPAddress clientIP);
//file.cpp //file.cpp
bool handleFileRead(AsyncWebServerRequest*, String path); bool handleFileRead(AsyncWebServerRequest*, String path);
//dmx.cpp
void handleDMX();
//hue.cpp //hue.cpp
void handleHue(); void handleHue();
void reconnectHue(); void reconnectHue();

View File

@ -214,11 +214,12 @@ function S(){GCH(15);GetV();mMap();}function H(){window.open("https://github.com
<i>Number of fixtures is taken from LED config page</i><br> <i>Number of fixtures is taken from LED config page</i><br>
channels per fixture (15 max): <input type="number" min="1" max="15" name="CN" maxlength="2" onchange="mMap();"><br /> Channels per fixture (15 max): <input type="number" min="1" max="15" name="CN" maxlength="2" onchange="mMap();"><br />
start channel: <input type="number" min="1" max="512" name="CS" maxlength="2"><br /> Start channel: <input type="number" min="1" max="512" name="CS" maxlength="2"><br />
spacing between start channels: <input type="number" min="1" max="512" name="CG" maxlength="2" onchange="mMap();"> [ <a href="javascript:alert('if set to 10, first fixture will start at 10,\nsecond will start at 20 etc.\nRegardless of the channel count.\nMakes memorizing channel numbers easier.');">info</a> ]<br> Spacing between start channels: <input type="number" min="1" max="512" name="CG" maxlength="2" onchange="mMap();"> [ <a href="javascript:alert('if set to 10, first fixture will start at 10,\nsecond will start at 20 etc.\nRegardless of the channel count.\nMakes memorizing channel numbers easier.');">info</a> ]<br>
<div id="gapwarning" style="color: orange; display: none;">WARNING: Channel gap is lower than channels per fixture.<br />This will cause overlap.</div> <div id="gapwarning" style="color: orange; display: none;">WARNING: Channel gap is lower than channels per fixture.<br />This will cause overlap.</div>
<button type="button" onclick="location.href='/dmxmap';">DMX Map</button> <button type="button" onclick="location.href='/dmxmap';">DMX Map</button><br>
DMX fixtures start LED: <input type="number" min="0" max="1500" name="SL">
<h3>channel functions</h3> <h3>channel functions</h3>
<div id="dmxchannels"></div> <div id="dmxchannels"></div>
<hr><button type="button" onclick="B()">Back</button><button type="submit">Save</button> <hr><button type="button" onclick="B()">Back</button><button type="submit">Save</button>

View File

@ -307,6 +307,10 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
if (t>0 && t<513) { if (t>0 && t<513) {
DMXGap = t; DMXGap = t;
} }
t = request->arg("SL").toInt();
if (t>=0 && t < MAX_LEDS) {
DMXStartLED = t;
}
for (int i=0; i<15; i++) { for (int i=0; i<15; i++) {
String argname = "CH" + String((i+1)); String argname = "CH" + String((i+1));
t = request->arg(argname).toInt(); t = request->arg(argname).toInt();

View File

@ -1,5 +1,5 @@
#include "BlynkSimpleEsp.h" #include "BlynkSimpleEsp.h"
WiFiClient _blynkWifiClient; WiFiClient _blynkWifiClient;
BlynkArduinoClient _blynkTransport(_blynkWifiClient); BlynkArduinoClient _blynkTransport(_blynkWifiClient);
BlynkWifi Blynk(_blynkTransport); BlynkWifi Blynk(_blynkTransport);

View File

@ -213,7 +213,7 @@ void WLED::setup()
} }
#endif #endif
#ifdef WLED_ENABLE_DMX #ifdef WLED_ENABLE_DMX
dmx.init(512); // initialize with bus length initDMX();
#endif #endif
// HTTP server page init // HTTP server page init
initServer(); initServer();

View File

@ -8,7 +8,7 @@
*/ */
// version code in format yymmddb (b = daily build) // version code in format yymmddb (b = daily build)
#define VERSION 2004061 #define VERSION 2004100
// ESP8266-01 (blue) got too little storage space to work with all features of WLED. To use it, you must use ESP8266 Arduino Core v2.4.2 and the setting 512K(No SPIFFS). // ESP8266-01 (blue) got too little storage space to work with all features of WLED. To use it, you must use ESP8266 Arduino Core v2.4.2 and the setting 512K(No SPIFFS).
@ -25,9 +25,9 @@
//#define WLED_DISABLE_CRONIXIE // saves 3kb //#define WLED_DISABLE_CRONIXIE // saves 3kb
//#define WLED_DISABLE_HUESYNC // saves 4kb //#define WLED_DISABLE_HUESYNC // saves 4kb
//#define WLED_DISABLE_INFRARED // there is no pin left for this on ESP8266-01, saves 12kb //#define WLED_DISABLE_INFRARED // there is no pin left for this on ESP8266-01, saves 12kb
#define WLED_ENABLE_MQTT // saves 12kb #define WLED_ENABLE_MQTT // saves 12kb
#define WLED_ENABLE_ADALIGHT // saves 500b only #define WLED_ENABLE_ADALIGHT // saves 500b only
//#define WLED_ENABLE_DMX // uses 3.5kb //#define WLED_ENABLE_DMX // uses 3.5kb (use LEDPIN other than 2)
#define WLED_DISABLE_FILESYSTEM // SPIFFS is not used by any WLED feature yet #define WLED_DISABLE_FILESYSTEM // SPIFFS is not used by any WLED feature yet
//#define WLED_ENABLE_FS_SERVING // Enable sending html file from SPIFFS before serving progmem version //#define WLED_ENABLE_FS_SERVING // Enable sending html file from SPIFFS before serving progmem version
@ -293,6 +293,7 @@ WLED_GLOBAL uint16_t userVar0 _INIT(0), userVar1 _INIT(0); //available for use i
// assigns the different channels to different functions. See wled21_dmx.ino for more information. // assigns the different channels to different functions. See wled21_dmx.ino for more information.
WLED_GLOBAL uint16_t DMXGap _INIT(10); // gap between the fixtures. makes addressing easier because you don't have to memorize odd numbers when climbing up onto a rig. WLED_GLOBAL uint16_t DMXGap _INIT(10); // gap between the fixtures. makes addressing easier because you don't have to memorize odd numbers when climbing up onto a rig.
WLED_GLOBAL uint16_t DMXStart _INIT(10); // start address of the first fixture WLED_GLOBAL uint16_t DMXStart _INIT(10); // start address of the first fixture
WLED_GLOBAL uint16_t DMXStartLED _INIT(0); // LED from which DMX fixtures start
#endif #endif
// internal global variable declarations // internal global variable declarations

View File

@ -1,387 +1,387 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup> <ItemGroup>
<Filter Include="Source Files"> <Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter> </Filter>
<Filter Include="Header Files"> <Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions> <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter> </Filter>
<Filter Include="Resource Files"> <Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter> </Filter>
<Filter Include="Source Files\Dependencies"> <Filter Include="Source Files\Dependencies">
<UniqueIdentifier>{72fe60da-ba26-45b4-82c1-bdff809975da}</UniqueIdentifier> <UniqueIdentifier>{72fe60da-ba26-45b4-82c1-bdff809975da}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Header Files\Dependencies"> <Filter Include="Header Files\Dependencies">
<UniqueIdentifier>{8880888d-efea-4189-a25a-834b7b3bb756}</UniqueIdentifier> <UniqueIdentifier>{8880888d-efea-4189-a25a-834b7b3bb756}</UniqueIdentifier>
</Filter> </Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="wled00.ino" /> <None Include="wled00.ino" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="__vm\.wled00.vsarduino.h"> <ClInclude Include="__vm\.wled00.vsarduino.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="html_classic.h"> <ClInclude Include="html_classic.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="html_mobile.h"> <ClInclude Include="html_mobile.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="html_other.h"> <ClInclude Include="html_other.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="html_settings.h"> <ClInclude Include="html_settings.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="FX.h"> <ClInclude Include="FX.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\json\ArduinoJson-v6.h"> <ClInclude Include="src\dependencies\json\ArduinoJson-v6.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\json\AsyncJson-v6.h"> <ClInclude Include="src\dependencies\json\AsyncJson-v6.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient.h"> <ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient.hpp"> <ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient.hpp">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkApi.h"> <ClInclude Include="src\dependencies\blynk\Blynk\BlynkApi.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkApiArduino.h"> <ClInclude Include="src\dependencies\blynk\Blynk\BlynkApiArduino.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkArduinoClient.h"> <ClInclude Include="src\dependencies\blynk\Blynk\BlynkArduinoClient.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkConfig.h"> <ClInclude Include="src\dependencies\blynk\Blynk\BlynkConfig.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkDateTime.h"> <ClInclude Include="src\dependencies\blynk\Blynk\BlynkDateTime.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkDebug.h"> <ClInclude Include="src\dependencies\blynk\Blynk\BlynkDebug.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkDetectDevice.h"> <ClInclude Include="src\dependencies\blynk\Blynk\BlynkDetectDevice.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkEveryN.h"> <ClInclude Include="src\dependencies\blynk\Blynk\BlynkEveryN.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkFifo.h"> <ClInclude Include="src\dependencies\blynk\Blynk\BlynkFifo.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkHandlers.h"> <ClInclude Include="src\dependencies\blynk\Blynk\BlynkHandlers.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkParam.h"> <ClInclude Include="src\dependencies\blynk\Blynk\BlynkParam.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkProtocol.h"> <ClInclude Include="src\dependencies\blynk\Blynk\BlynkProtocol.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkProtocolDefs.h"> <ClInclude Include="src\dependencies\blynk\Blynk\BlynkProtocolDefs.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\blynk\BlynkSimpleEsp.h"> <ClInclude Include="src\dependencies\blynk\BlynkSimpleEsp.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkTemplates.h"> <ClInclude Include="src\dependencies\blynk\Blynk\BlynkTemplates.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkTimer.h"> <ClInclude Include="src\dependencies\blynk\Blynk\BlynkTimer.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkUtility.h"> <ClInclude Include="src\dependencies\blynk\Blynk\BlynkUtility.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkWidgetBase.h"> <ClInclude Include="src\dependencies\blynk\Blynk\BlynkWidgetBase.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkWiFiCommon.h"> <ClInclude Include="src\dependencies\blynk\Blynk\BlynkWiFiCommon.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Callbacks.hpp"> <ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Callbacks.hpp">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\ConnAckPacket.hpp"> <ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\ConnAckPacket.hpp">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\DisconnectReasons.hpp"> <ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\DisconnectReasons.hpp">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\espalexa\Espalexa.h"> <ClInclude Include="src\dependencies\espalexa\Espalexa.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\espalexa\EspalexaDevice.h"> <ClInclude Include="src\dependencies\espalexa\EspalexaDevice.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\e131\ESPAsyncE131.h"> <ClInclude Include="src\dependencies\e131\ESPAsyncE131.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Flags.hpp"> <ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Flags.hpp">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Helpers.hpp"> <ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Helpers.hpp">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\MessageProperties.hpp"> <ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\MessageProperties.hpp">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="NpbWrapper.h"> <ClInclude Include="NpbWrapper.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\Packet.hpp"> <ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\Packet.hpp">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\ParsingInformation.hpp"> <ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\ParsingInformation.hpp">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PingRespPacket.hpp"> <ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PingRespPacket.hpp">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubAckPacket.hpp"> <ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubAckPacket.hpp">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubCompPacket.hpp"> <ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubCompPacket.hpp">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PublishPacket.hpp"> <ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PublishPacket.hpp">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubRecPacket.hpp"> <ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubRecPacket.hpp">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubRelPacket.hpp"> <ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubRelPacket.hpp">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Storage.hpp"> <ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Storage.hpp">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\SubAckPacket.hpp"> <ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\SubAckPacket.hpp">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\time\Time.h"> <ClInclude Include="src\dependencies\time\Time.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\time\TimeLib.h"> <ClInclude Include="src\dependencies\time\TimeLib.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\timezone\Timezone.h"> <ClInclude Include="src\dependencies\timezone\Timezone.h">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\UnsubAckPacket.hpp"> <ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\UnsubAckPacket.hpp">
<Filter>Header Files\Dependencies</Filter> <Filter>Header Files\Dependencies</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="alexa.h"> <ClInclude Include="alexa.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="blynk.h"> <ClInclude Include="blynk.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="button.h"> <ClInclude Include="button.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="colors.h"> <ClInclude Include="colors.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="const.h"> <ClInclude Include="const.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="cronixie.h"> <ClInclude Include="cronixie.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="dmx.h"> <ClInclude Include="dmx.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="file.h"> <ClInclude Include="file.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="html_ui.h"> <ClInclude Include="html_ui.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="hue.h"> <ClInclude Include="hue.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="ir.h"> <ClInclude Include="ir.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="json.h"> <ClInclude Include="json.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="led.h"> <ClInclude Include="led.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="mqtt.h"> <ClInclude Include="mqtt.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="notify.h"> <ClInclude Include="notify.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="ntp.h"> <ClInclude Include="ntp.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="overlay.h"> <ClInclude Include="overlay.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="set.h"> <ClInclude Include="set.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="usermod.h"> <ClInclude Include="usermod.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="wled.h"> <ClInclude Include="wled.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="wled_eeprom.h"> <ClInclude Include="wled_eeprom.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="wled_server.h"> <ClInclude Include="wled_server.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="xml.h"> <ClInclude Include="xml.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="ir_codes.h"> <ClInclude Include="ir_codes.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="palettes.h"> <ClInclude Include="palettes.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="FX.cpp"> <ClCompile Include="FX.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="FX_fcn.cpp"> <ClCompile Include="FX_fcn.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\dependencies\blynk\Blynk\utility.cpp"> <ClCompile Include="src\dependencies\blynk\Blynk\utility.cpp">
<Filter>Source Files\Dependencies</Filter> <Filter>Source Files\Dependencies</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient.cpp"> <ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient.cpp">
<Filter>Source Files\Dependencies</Filter> <Filter>Source Files\Dependencies</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\dependencies\blynk\Blynk\BlynkDebug.cpp"> <ClCompile Include="src\dependencies\blynk\Blynk\BlynkDebug.cpp">
<Filter>Source Files\Dependencies</Filter> <Filter>Source Files\Dependencies</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\dependencies\blynk\Blynk\BlynkHandlers.cpp"> <ClCompile Include="src\dependencies\blynk\Blynk\BlynkHandlers.cpp">
<Filter>Source Files\Dependencies</Filter> <Filter>Source Files\Dependencies</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\dependencies\blynk\Blynk\BlynkTimer.cpp"> <ClCompile Include="src\dependencies\blynk\Blynk\BlynkTimer.cpp">
<Filter>Source Files\Dependencies</Filter> <Filter>Source Files\Dependencies</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\ConnAckPacket.cpp"> <ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\ConnAckPacket.cpp">
<Filter>Source Files\Dependencies</Filter> <Filter>Source Files\Dependencies</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\dependencies\time\DateStrings.cpp"> <ClCompile Include="src\dependencies\time\DateStrings.cpp">
<Filter>Source Files\Dependencies</Filter> <Filter>Source Files\Dependencies</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\dependencies\espalexa\EspalexaDevice.cpp"> <ClCompile Include="src\dependencies\espalexa\EspalexaDevice.cpp">
<Filter>Source Files\Dependencies</Filter> <Filter>Source Files\Dependencies</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\dependencies\e131\ESPAsyncE131.cpp"> <ClCompile Include="src\dependencies\e131\ESPAsyncE131.cpp">
<Filter>Source Files\Dependencies</Filter> <Filter>Source Files\Dependencies</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PingRespPacket.cpp"> <ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PingRespPacket.cpp">
<Filter>Source Files\Dependencies</Filter> <Filter>Source Files\Dependencies</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubAckPacket.cpp"> <ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubAckPacket.cpp">
<Filter>Source Files\Dependencies</Filter> <Filter>Source Files\Dependencies</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubCompPacket.cpp"> <ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubCompPacket.cpp">
<Filter>Source Files\Dependencies</Filter> <Filter>Source Files\Dependencies</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PublishPacket.cpp"> <ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PublishPacket.cpp">
<Filter>Source Files\Dependencies</Filter> <Filter>Source Files\Dependencies</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubRecPacket.cpp"> <ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubRecPacket.cpp">
<Filter>Source Files\Dependencies</Filter> <Filter>Source Files\Dependencies</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubRelPacket.cpp"> <ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubRelPacket.cpp">
<Filter>Source Files\Dependencies</Filter> <Filter>Source Files\Dependencies</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\SubAckPacket.cpp"> <ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\SubAckPacket.cpp">
<Filter>Source Files\Dependencies</Filter> <Filter>Source Files\Dependencies</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\dependencies\time\Time.cpp"> <ClCompile Include="src\dependencies\time\Time.cpp">
<Filter>Source Files\Dependencies</Filter> <Filter>Source Files\Dependencies</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\dependencies\timezone\Timezone.cpp"> <ClCompile Include="src\dependencies\timezone\Timezone.cpp">
<Filter>Source Files\Dependencies</Filter> <Filter>Source Files\Dependencies</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\UnsubAckPacket.cpp"> <ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\UnsubAckPacket.cpp">
<Filter>Source Files\Dependencies</Filter> <Filter>Source Files\Dependencies</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="alexa.cpp"> <ClCompile Include="alexa.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="blynk.cpp"> <ClCompile Include="blynk.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="button.cpp"> <ClCompile Include="button.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="colors.cpp"> <ClCompile Include="colors.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="cronixie.cpp"> <ClCompile Include="cronixie.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="file.cpp"> <ClCompile Include="file.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="hue.cpp"> <ClCompile Include="hue.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ir.cpp"> <ClCompile Include="ir.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="json.cpp"> <ClCompile Include="json.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="led.cpp"> <ClCompile Include="led.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="mqtt.cpp"> <ClCompile Include="mqtt.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="notify.cpp"> <ClCompile Include="notify.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ntp.cpp"> <ClCompile Include="ntp.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="overlay.cpp"> <ClCompile Include="overlay.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="set.cpp"> <ClCompile Include="set.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="usermod.cpp"> <ClCompile Include="usermod.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="wled.cpp"> <ClCompile Include="wled.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="wled_eeprom.cpp"> <ClCompile Include="wled_eeprom.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="wled_server.cpp"> <ClCompile Include="wled_server.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="xml.cpp"> <ClCompile Include="xml.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -555,7 +555,8 @@ void loadSettingsFromEEPROM(bool first)
for (int i=0;i<15;i++) { for (int i=0;i<15;i++) {
DMXFixtureMap[i] = EEPROM.read(2535+i); DMXFixtureMap[i] = EEPROM.read(2535+i);
} //last used: 2549. maybe leave a few bytes for future expansion and go on with 2600 kthxbye. } //last used: 2549
EEPROM.write(2550, DMXStartLED);
#endif #endif
//user MOD memory //user MOD memory

View File

@ -457,6 +457,7 @@ void getSettingsJS(byte subPage, char* dest)
sappend('v',"CN",DMXChannels); sappend('v',"CN",DMXChannels);
sappend('v',"CG",DMXGap); sappend('v',"CG",DMXGap);
sappend('v',"CS",DMXStart); sappend('v',"CS",DMXStart);
sappend('v',"SL",DMXStartLED);
sappend('i',"CH1",DMXFixtureMap[0]); sappend('i',"CH1",DMXFixtureMap[0]);
sappend('i',"CH2",DMXFixtureMap[1]); sappend('i',"CH2",DMXFixtureMap[1]);