mtongnz / ESP8266_ArtNetNode_v2

ESP8266 based WiFi ArtNet to DMX, RDM and LED Pixels
GNU General Public License v3.0
606 stars 158 forks source link

Group pixels to reduce DMX footprint #142

Open oligriffiths opened 1 year ago

oligriffiths commented 1 year ago

Hi

I am considering this package for a DMX LED project I have, and was wondering about an idea to reduce the DMX footprint by providing the ability to group N pixels together, thus dividing the DMX footprint per strip by N. That way 1 set of 3 DMX channels (RGB) can be assigned to N number of pixels.

Anyway I've ordered the relevant hardware and looking forward to getting started.

Thanks

Oli

ulri-me commented 1 year ago

Hi

your question is missing an essential information: Which LED strip do you want to use?

In case it is the WS2812(b) then your idea will not work.

https://www.digikey.com/en/datasheets/parallaxinc/parallax-inc-28085-ws2812b-rgb-led-datasheet Have a look at the datasheet above. It states the LED has a "Cascading port transmission signal by single line".

This cascading transmission means that the first LED receives the RGB information for every pixel upcoming. It cuts away the first three bits (and displays them itself as RGB information) and transmit the remaining RGB information for the upcoming pixels in the transmission line.

Assuming you have a count of p pixels, then the first LED in the line must receive (p+1 - 1(the first pixel)) 3 bits for RGB. It cuts away 3 bits (RGB) and transmits (p+1 - 2(the second pixel)) 3 (RGB) bits down the line. The p'th pixel will then receive *(p+1 - p(the p'th pixel)) 3 (RGB) bits**, so there is nothing to transmit left.

To sum up this explanation you cannot build groups within one LED strip as you have the cascading transmission line.

Your only option would be to use multiple LED strips in parallel powered by one output. As the transmission is unidirectional, you can connect multiple "first LEDs" of multiple LED strips to the same output and therefore control a higher count.

oligriffiths commented 1 year ago

Perhaps I wasn’t clear enough in my description.

What I am suggesting is merely assigning 1 set of 3 DMX channels (RGB) to N pixels, so say instead of using 12 channels for the first 4 pixels, you could use 3 channels and have all 4 pixels be set to the same value as those 3 DMX channels. Essentially copying and pasting the value of each set of DMX channels to N pixels, rather than it being a 1:1 mapping.

oligriffiths commented 1 year ago

Alternatively a very simple example would be a group size of N pixels where N = pixel strip length, thus being able to control the entire strip as one color with just 3 DMX channels.