diff --git a/CHANGELOG.md b/CHANGELOG.md
index d92a1966a..31c22f526 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,12 @@
### Development versions after 0.9.1 release
+
+#### Build 2004100
+
+- Fixed DMX output compilation
+- Added DMX start LED setting
+
#### Build 2004061
- Fixed RBG and BGR getPixelColor (#825)
diff --git a/wled00/dmx.cpp b/wled00/dmx.cpp
index ea0871241..ccd3b0643 100644
--- a/wled00/dmx.cpp
+++ b/wled00/dmx.cpp
@@ -17,7 +17,7 @@ void handleDMX()
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
byte w = in >> 24 & 0xFF;
@@ -25,7 +25,7 @@ void handleDMX()
byte g = in >> 8 & 0xFF;
byte b = in & 0xFF;
- int DMXFixtureStart = DMXStart + (DMXGap * i);
+ int DMXFixtureStart = DMXStart + (DMXGap * (i - DMXStartLED));
for (int j = 0; j < DMXChannels; j++) {
int DMXAddr = DMXFixtureStart + j;
switch (DMXFixtureMap[j]) {
@@ -57,6 +57,11 @@ void handleDMX()
dmx.update(); // update the DMX bus
}
+void initDMX() {
+ dmx.init(512); // initialize with bus length
+}
+
#else
void handleDMX() {}
+void initDMX() {}
#endif
diff --git a/wled00/fcn_declare.h b/wled00/fcn_declare.h
index c0826d6aa..7261efcb1 100644
--- a/wled00/fcn_declare.h
+++ b/wled00/fcn_declare.h
@@ -37,15 +37,16 @@ void colorRGBtoXY(byte* rgb, float* xy); // only defined if huesync disabled TOD
void colorFromDecOrHexString(byte* rgb, char* in);
void colorRGBtoRGBW(byte* rgb); //rgb to rgbw (http://codewelt.com/rgbw). (RGBW_MODE_LEGACY)
+//dmx.cpp
+void initDMX();
+void handleDMX();
+
//e131.cpp
void handleE131Packet(e131_packet_t* p, IPAddress clientIP);
//file.cpp
bool handleFileRead(AsyncWebServerRequest*, String path);
-//dmx.cpp
-void handleDMX();
-
//hue.cpp
void handleHue();
void reconnectHue();
diff --git a/wled00/html_settings.h b/wled00/html_settings.h
index e2d94f973..fa0195334 100644
--- a/wled00/html_settings.h
+++ b/wled00/html_settings.h
@@ -214,11 +214,12 @@ function S(){GCH(15);GetV();mMap();}function H(){window.open("https://github.com
Number of fixtures is taken from LED config page
-channels per fixture (15 max):
-start channel:
-spacing between start channels: [ info ]
+Channels per fixture (15 max):
+Start channel:
+Spacing between start channels: [ info ]
WARNING: Channel gap is lower than channels per fixture.
This will cause overlap.
-
+
+DMX fixtures start LED:
channel functions
diff --git a/wled00/set.cpp b/wled00/set.cpp
index 7fa2a3276..fb7b85967 100644
--- a/wled00/set.cpp
+++ b/wled00/set.cpp
@@ -307,6 +307,10 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
if (t>0 && t<513) {
DMXGap = t;
}
+ t = request->arg("SL").toInt();
+ if (t>=0 && t < MAX_LEDS) {
+ DMXStartLED = t;
+ }
for (int i=0; i<15; i++) {
String argname = "CH" + String((i+1));
t = request->arg(argname).toInt();
diff --git a/wled00/src/dependencies/blynk/BlynkSimpleEsp.cpp b/wled00/src/dependencies/blynk/BlynkSimpleEsp.cpp
index a15d2c1bb..60ba109ed 100644
--- a/wled00/src/dependencies/blynk/BlynkSimpleEsp.cpp
+++ b/wled00/src/dependencies/blynk/BlynkSimpleEsp.cpp
@@ -1,5 +1,5 @@
-#include "BlynkSimpleEsp.h"
-
-WiFiClient _blynkWifiClient;
-BlynkArduinoClient _blynkTransport(_blynkWifiClient);
+#include "BlynkSimpleEsp.h"
+
+WiFiClient _blynkWifiClient;
+BlynkArduinoClient _blynkTransport(_blynkWifiClient);
BlynkWifi Blynk(_blynkTransport);
\ No newline at end of file
diff --git a/wled00/wled.cpp b/wled00/wled.cpp
index b68723bb0..7f8ef5973 100644
--- a/wled00/wled.cpp
+++ b/wled00/wled.cpp
@@ -213,7 +213,7 @@ void WLED::setup()
}
#endif
#ifdef WLED_ENABLE_DMX
- dmx.init(512); // initialize with bus length
+ initDMX();
#endif
// HTTP server page init
initServer();
diff --git a/wled00/wled.h b/wled00/wled.h
index 6f4b2cb00..3c82efbd6 100644
--- a/wled00/wled.h
+++ b/wled00/wled.h
@@ -8,7 +8,7 @@
*/
// 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).
@@ -25,9 +25,9 @@
//#define WLED_DISABLE_CRONIXIE // saves 3kb
//#define WLED_DISABLE_HUESYNC // saves 4kb
//#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_ADALIGHT // saves 500b only
-//#define WLED_ENABLE_DMX // uses 3.5kb
+#define WLED_ENABLE_MQTT // saves 12kb
+#define WLED_ENABLE_ADALIGHT // saves 500b only
+//#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_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.
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 DMXStartLED _INIT(0); // LED from which DMX fixtures start
#endif
// internal global variable declarations
diff --git a/wled00/wled00.vcxproj.filters b/wled00/wled00.vcxproj.filters
index 39fe509e9..3ed232a98 100644
--- a/wled00/wled00.vcxproj.filters
+++ b/wled00/wled00.vcxproj.filters
@@ -1,387 +1,387 @@
-
-
-
-
- {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
- cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
-
-
- {93995380-89BD-4b04-88EB-625FBE52EBFB}
- h;hh;hpp;hxx;hm;inl;inc;xsd
-
-
- {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
- rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
-
-
- {72fe60da-ba26-45b4-82c1-bdff809975da}
-
-
- {8880888d-efea-4189-a25a-834b7b3bb756}
-
-
-
-
-
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files\Dependencies
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files\Dependencies
-
-
- Source Files\Dependencies
-
-
- Source Files\Dependencies
-
-
- Source Files\Dependencies
-
-
- Source Files\Dependencies
-
-
- Source Files\Dependencies
-
-
- Source Files\Dependencies
-
-
- Source Files\Dependencies
-
-
- Source Files\Dependencies
-
-
- Source Files\Dependencies
-
-
- Source Files\Dependencies
-
-
- Source Files\Dependencies
-
-
- Source Files\Dependencies
-
-
- Source Files\Dependencies
-
-
- Source Files\Dependencies
-
-
- Source Files\Dependencies
-
-
- Source Files\Dependencies
-
-
- Source Files\Dependencies
-
-
- Source Files\Dependencies
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+ {72fe60da-ba26-45b4-82c1-bdff809975da}
+
+
+ {8880888d-efea-4189-a25a-834b7b3bb756}
+
+
+
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files\Dependencies
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files\Dependencies
+
+
+ Source Files\Dependencies
+
+
+ Source Files\Dependencies
+
+
+ Source Files\Dependencies
+
+
+ Source Files\Dependencies
+
+
+ Source Files\Dependencies
+
+
+ Source Files\Dependencies
+
+
+ Source Files\Dependencies
+
+
+ Source Files\Dependencies
+
+
+ Source Files\Dependencies
+
+
+ Source Files\Dependencies
+
+
+ Source Files\Dependencies
+
+
+ Source Files\Dependencies
+
+
+ Source Files\Dependencies
+
+
+ Source Files\Dependencies
+
+
+ Source Files\Dependencies
+
+
+ Source Files\Dependencies
+
+
+ Source Files\Dependencies
+
+
+ Source Files\Dependencies
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
\ No newline at end of file
diff --git a/wled00/wled_eeprom.cpp b/wled00/wled_eeprom.cpp
index ccb16ff56..b06371ee6 100644
--- a/wled00/wled_eeprom.cpp
+++ b/wled00/wled_eeprom.cpp
@@ -555,7 +555,8 @@ void loadSettingsFromEEPROM(bool first)
for (int i=0;i<15;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
//user MOD memory
diff --git a/wled00/xml.cpp b/wled00/xml.cpp
index 3af1e54ce..1e14ea7da 100644
--- a/wled00/xml.cpp
+++ b/wled00/xml.cpp
@@ -457,6 +457,7 @@ void getSettingsJS(byte subPage, char* dest)
sappend('v',"CN",DMXChannels);
sappend('v',"CG",DMXGap);
sappend('v',"CS",DMXStart);
+ sappend('v',"SL",DMXStartLED);
sappend('i',"CH1",DMXFixtureMap[0]);
sappend('i',"CH2",DMXFixtureMap[1]);