claudeheintz / LXESP8266DMX

DMX Driver for ESP8266 using ArduinoIDE
BSD 3-Clause "New" or "Revised" License
31 stars 9 forks source link

receive DMX packets from simple 12-channel controller (with less than 512 channels per packet) #10

Open korakinos opened 1 year ago

korakinos commented 1 year ago

I have a working test setup based on the DMXInputTest.ino example from this repository. It can receive DMX signals sent from an Enttec DMX USB Pro (verified by controlling a connected LED). However, it fails to receive signals from a simple 12-channel manual DMX controller.

Looking at the DMX signals with an oscilloscope, I can see that the manual controller, other than the Enttec, only sends 12 channels of data per packet, not the full DMX range of 512 channels. So I suspect this to be the cause.

Does this library function with DMX packets of only 12 channels (or generally, less than 512)? If not, could it be changed to support this? How?

claudeheintz commented 1 year ago

The controller is not sending legal DMX.  In order to conform to the standard, the controller should send a minimum of 24 slots worth of data.  There is a #define in LXESP8266UARTDMX.h that reflects this (and you can edit and change to allow 12 slots).  

claudeheintz commented 1 year ago

[93] #define DMX_MIN_SLOTS 24

korakinos commented 1 year ago

Thanks, I didn't know that! After changing DMX_MIN_SLOTS to 12, I can now receive packets from my controller.

Even though devices like this violate the DMX specification, I wonder if it would nevertheless make sense to support them in the library. I'm not sure how common they are (the one I am using is the "Stairville DDC-12"), but they are potentially a simple way to add a physical fader interface to an ESP8266.

Edit:I just measured another controller I have access to, a 6-channel one. And indeed it only outputs six DMX channels.