Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

16bit resolution per color? #165

Closed
stanelie opened this issue Nov 20, 2024 · 8 comments
Closed

16bit resolution per color? #165

stanelie opened this issue Nov 20, 2024 · 8 comments

Comments

@stanelie
Copy link

Hello.

My application requires 16bit resolution per color channel. How do I set the bit depth?

The code examples show that the colors should be numbers between 0 and 255, but is this a hard restriction? Where is this set?

Thanks!

@dhalbert
Copy link
Contributor

The NeoPixels themselves physically only support 8-bit color resolution: they are sent 8-bit-each R, G, and B values. So you can't display colors to a finer resolution than that.

@stanelie
Copy link
Author

Ahhh, this sucks. Back to the drawing board I guess.
Thanks for this precious info!

@stanelie
Copy link
Author

Hello again.
I am currently working with the big 4 watt neopixel from here : https://www.adafruit.com/product/5163
After further investigation, I find that the onboard controller SM16714 has indeed 8 bit resolution per color, but on top of that, a 5 bit resolution current control per color ! Combining both, this would maybe lead to more resolution then what is readily available.

"Use the 5-bit current control per color to lower the brightness without sacrificing resolution, and tune the current of individual colors, allowing for more accurate color mixing. "

Does the "brightness" parameter of the Neopixel library control this current globally? Would it be possible to control it for indivieual channels?

Reference : https://www.hida-led.com/sm16714-ic-componenets-product/

My next option will be to remove the chip and control the 4 LEDs directly with PWM signals from 4 discreet pins

@dhalbert
Copy link
Contributor

This driver doesn't support that. I guess if you don't supply the 20-bit current value, it still works. It's not clear who does support this extended protocol, except for the proprietary controllers. Some info here:
wled/WLED#4221 (unmerged PR)
https://wled.discourse.group/t/sm16714-pixel-ic/9794

Are you using a whole string of these?

@stanelie
Copy link
Author

No, just one "pixel".
It's for theater lighting effects, and the resolution for the low levels is very important so you don't see the "steps".

@dhalbert
Copy link
Contributor

dhalbert commented Nov 20, 2024

We don't have DMX controllers, but would DMX provide the resolution you need?

@stanelie
Copy link
Author

I am using Artnet, a network (UDP) version of DMX. This part is working.

On most light controller desks/software, you can configure a channel to use 16bit resolution. When set to this, a "channel" will encode it's level value on 2 adjacent DMX channels. The receiving device will use those 2 numbers to read a 16bit value number.

So now, I'm trying to have my Neopixel device behave like a proper 16bit output device.

@jayceegee87
Copy link

Hi all,

Just chiming in that these are increasingly being utilized in outdoor LED applications (in my case LIFX string lights) given the ability to calibrate all of the individual color settings. It would be great to add compatibility and I happen to have one extra string available to fiddle around with if you need someone to check/test something.

I also experienced the exact same artifacts as everyone else who has requested SM16714 support, but did identify an odd partial workaround at the expense of the overall brightness: https://www.reddit.com/r/WLED/s/krDfmbn2co

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants