Organizing RGB, RGB+W, RGB+W+I lamps


New elf
Oct 12, 2011
I have a couple of LED strips on order that have RGB+W LEDs. I have a number of RGB+W+I where the I is a separate intensity setting for all colours. I've also got a number of GE-35 Christmas strings.
The GE-35's run with wireless remote controls and have a limited program. Only 4 bits per colour. I've written code for a dsPIC30F4012 that runs them from DMX512A messages.

I'll port that code to another module I've built that uses a PIC30F5011. This module has two CAN bus channels or if I configure it differently it has a CAN bus to RS485. Or instead of the second CAN bus driver I can install a 5V TTL driver pair for either CLK/DATA or two DATA for two GE-35 strings.

With only 4 bits per pixel it could be compressed into two slots but I don't think it's worth it. Better to be compatible with a number of other RGB LED strips and arrays. But there lies the problem. Some of the lamps are 3 slots per lamp, others are 4 and the Olympic Ring lights are 5. At least at the CAN bus layer.

I've thought of several options.
1. Run separate lamp types with either 3, 4 or 5 slots per lamp.
2. Run a universe with the first 12 slots reserved for control information.
a) Slot 1 = Global-Single or number of lamps per group.
i) Global = 0 which means the first 5 of the slots are applied to all the lamps in the universe.
ii) Non-zero means each lamp group is applied to X number of lamps. If it's 1 then there are up to 5 slots per lamp (100 lamps total in one universe). If 2 then each slot group applies to 2 lamps. And so on.
b) Slot 2 = DMX2CAN type. Perhaps not the best label. This holds how many slots are assigned to a lamp. Normally a minimum value would be 3 for the standard WS2801 type LED strips or the GE-35s. A value 4 for the RGB+W strips and 5 for my ORing lamps.
c) Slots 3,4 & 5 hold the RGB values if the universe setting is global.
d) Slot 6 the WHITE value if the DMX2CAN type is for RGB+W
e) Slot 7 for the overall INTENSITY if the DMX2CAN type has 5 slots.
f) The rest of the slots up to #12 are yet to be defined. I'm thinking a sub type like WS2801 driver.
g) After slot 12 there are lamp groups of 3,4 or 5 (or even 6) slots per lamp.

The receiving module (what I've called DMX2CAN) can parse the first 12 bytes and determine what to do with the rest of the universe slots. I've attached a capture of Vixen3 lamp information. Either a lamp with just the RGBWI information or the parameters inside the universe idea.

I'm just not sure how to use that easily with Vixen or LOR3. (I have LOR2 but it doesn't do E1.31 so I'd need to upgrade).

Is this a worthwhile idea? If the DMX512A message tells the LED driver how to interpret the DMX Universe information then it would be easy enough to substitute one type of string for another without re-writing a whole bunch of show software.

It's my lack of knowledge on how to do shows with lots of RGB lamps in Vixen or LOR that has me stumped.