#include "wled.h" /* * Support for DMX via MAX485. * Change the output pin in src/dependencies/ESPDMX.cpp if needed. * Library from: * https://github.com/Rickgg/ESP-Dmx */ #ifdef WLED_ENABLE_DMX void handleDMX() { // don't act, when in DMX Proxy mode if (e131ProxyUniverse != 0) return; // TODO: calculate brightness manually if no shutter channel is set uint8_t brightness = strip.getBrightness(); uint16_t len = strip.getLengthTotal(); for (int i = DMXStartLED; i < len; 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 = W(in); byte r = R(in); byte g = G(in); byte b = B(in); int DMXFixtureStart = DMXStart + (DMXGap * (i - DMXStartLED)); for (int j = 0; j < DMXChannels; j++) { int DMXAddr = DMXFixtureStart + j; switch (DMXFixtureMap[j]) { case 0: // Set this channel to 0. Good way to tell strobe- and fade-functions to fuck right off. dmx.write(DMXAddr, 0); break; case 1: // Red dmx.write(DMXAddr, r); break; case 2: // Green dmx.write(DMXAddr, g); break; case 3: // Blue dmx.write(DMXAddr, b); break; case 4: // White dmx.write(DMXAddr, w); break; case 5: // Shutter channel. Controls the brightness. dmx.write(DMXAddr, brightness); break; case 6: // Sets this channel to 255. Like 0, but more wholesome. dmx.write(DMXAddr, 255); break; } } } dmx.update(); // update the DMX bus } void initDMX() { dmx.init(512); // initialize with bus length } #else void handleDMX() {} void initDMX() {} #endif