Makuna / NeoPixelBus

An Arduino NeoPixel support library supporting a large variety of individually addressable LEDs. Please refer to the Wiki for more details. Please use the GitHub Discussions to ask questions as the GitHub Issues feature is used for bug tracking.
GNU Lesser General Public License v3.0
1.18k stars 264 forks source link

Add support for GW6205 chipset #858

Open jerano opened 2 weeks ago

jerano commented 2 weeks ago

I'd like to be able to use WLED, but my particular LED strip is currently not supported... and they kind of said if it's supported by NeoPixelBus it can be supported by WLED - So here by kindly ask if it's possible to add GW6205 support!?

GW6205 is supported by FastLED so hopefully it's not a super advanced thing to add support to NeoPixelBus? I can provide logs from logic analyzer or similiar if wanted/required.

Thanks!

Makuna commented 2 weeks ago

Find and reference the data sheet for the GW6205 is a start. A quick searched came up with just references to FastLED.

jerano commented 2 weeks ago

Trust me, I've tried... searched every corner of the vast internets to no avail! But basically it's the same as the WS28xx chipset but with a 12b color depth.

12 bits / color @ 800kHz (or 400kHz)

Below you can have a look at the pulse train for 1 pixel to display RED. 1px_RED

Timings... 1 bit = 1.25us 1 = 750ns high 0 = 250ns high

Makuna commented 2 weeks ago

Currently, non-byte aligned pixels is problematic with some of the methods. There is a new branch, CoreShaderBeta that makes this easier and it's the future; but is far from ready as it has some major changes.

Patrick-Ohlson commented 1 week ago

I would also love this implemented

Makuna commented 1 week ago

Is it just 12 bits per color element? Or does it include "padding bits" so that a single pixel of color is byte aligned? Like 4.12.12.12, with four leading/trailing bits used for something else?

jerano commented 1 week ago

As far as I can see, it's only 12+12+12 bits - see attached image on my previous post for a complete bitstream for one pixel.