How to split/segment one pixel to address each color individually?


try to make it short.
i’m using some P9813 modules attached to ESPs in my fully home environment.
eg. room1, esp8266 → 3x P9813 → module1+2: RGB strip, module3: 3 individual lamps attached each to output R, G, B
used this setup so far with my arduino based code using blynk.

now i’m switching to home assistant with changing to WLED as firmware for my hardware.
compiled, uploaded, works fine, looks really good.
i’m exited of that new possibilities with that powerful changed setup.

but now i want to split (or segment) those 3 lamps from module 3 (represents one pixel in WLED) into 3 R,G,B subpixels/segments to adjust each lamp brightness individually

but how could a solution look like?
is segmenting in that way possible through usermod code?
as WLED seems to use the FastLED library is coding a usermod with focus on that library maybe a better approach?



To change from RGB controlling 3 different white lights (one on each R,G,B channel) you would chose PWM White on a separate pin for each light. They will appear as 3 different LED’s in 1 segment on WLED. You can control their brightness individually.

…just added an image of the example in my post.

your suggestion don’t match with my setup as the WW leds are attached to an P9813 module.
but that PWM WHITE option would be perfect, if it would be somehow possible to add (link) that object for each R,G,B channel?

You are currently using 3 pins to drive the 3rd strip in your picture one for R,G,B.
Under WLED that is configured when you choose PWM RGB, it asks for 3 GPIO pins to use.
If you change the setting to PWM W it will ask for 1 GPIO so you delete the PWM RGB strip and add 3 separate PWM W strips to WLED and assign each one of the GPIO’s you were formerly using for PWM RGB. You end up with 3 new white only LED’s where you had one RGB LED.

You do need separate GPIO’s for each strip, so according to your diagram you’re using a total of 9 GPIO’s.

the P9813 modules are MOSFET PWM LED drivers, connected with a (data/clock) bus to 2 GPIOs.
in the settings the amount of leds (Length) is asked, in this case 3
so the system adds that 3rd pixel automatically as RGB

i don’t want to change my hardware setup as i build 5 in total in a similar config for my home.

Sorry - my bad - I misunderstood the P9813 boards to be simple analog MOSFET drivers.
Did a little research and I see they are a SPI (clock/data) variant for analog strips so you can have as many strips as you have boards running off the same 2 GPIO’s

That’s the good news, unfortunately that means white LED’s in this scheme take up a full channel but can’t be addressed as independent brightness easily. I see two choices -

  1. You have to create “special colours” (mixes of R,G,B) for the three white strips that correspond to the brightness you want for each strip. For eg. a colour of (255,0,0) would light WHT1 with the other two off, while (0,128,255) would have WHT1 off, WHT2 at 50% and WHT3 at full brightness. This won’t work well with effects although with carefully designed presets it might be good enough depending on what you need.

  2. Get two more p9813 boards and dedicate the white strips to one channel (R for example) and ignore the others. That will give you three separate LED’s which can be controlled independently by adjusting their brightness as long as you always make them “Red”.


first, thanks for your suggestions. they made me think a bit different.
and sorry for my late response, but after I played around with the interfaces it ended up coding my own usermod to get the functions I need which took some time.

if someone is interested in a similar setup I would share my code of course.

Hola bjrn
Me parece interesante
Favor comparte tu codigo.
gracias de antemano.

hi xandorg,

just uploaded the first release.