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 ]
- +
+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]);