1

In my next small Arduino project, I wanted to use some addressable rgb led strips. I made some small research and choose to use a strip with ws2812b. Generally, I know how this works but I am not 100% sure if what I think is correct. So please correct me if I am wrong.

For each pixel in the strip, we need to send 24 bits to control it. If we have 10 pixels in a strip then we need to send 240 bits. Then first pixel reads all 240 bits, sets itself color, and lastly propagates other 216 bits to the next pixel. And so on to the last pixel.

I am wondering, how much time does it take to update state of the last pixel in strip?

If sending 24 bit takes something about 30us (1.25us for 1 bit) then is that mean that sending signals to the last pixel in a strip with 10 pixels would take 300us + 270us + 240us + ... + 30us or is it rather just 300us?

1
  • it works like a row of buckets ... data fills the first bucket ... when the bucket is full then everything gets passed to the next bucket ... so, after reset, the first 24 bits go to the first LED ... the rest of the bits pass through... same thing happens at the second LED
    – jsotola
    Apr 23, 2023 at 0:03

1 Answer 1

0

I have a page about the WS2812 chip along with a suggested way of writing code simply for it. It also describes the timing.

The documented timing for a 0-bit is 1150 ns and for a 1-bit is 1300 ns.

NeoPixels timing

Thus, if we assume all bits are on, then 24 bits would take 24 * 1300 ns which is 31.2 µs.

Since the bits are propagated along the strip, then it would take 10 * 31.2 µs (312 µs) to send all 10 colours.

What I mean by "propagated" is that as each bit arrives at each chip it also forwards it onward to the next chip, much like a shift register. Thus the more bits you send the further the original ones are "pushed" towards the end of the strip.

As the documentation describes, each chip "reshapes" the incoming bit, so that any jitter or noise in the arriving bit is cleaned up as it is forwarded so that the individual bits do not degrade as they are forwarded. Think of Chinese Whispers - because of the reshaping by each chip the information is not corrupted as it is passed on.

Then you send 50 µs of 0V to latch the new colours to the entire strip.

So, the answer to your question is 362 µs (roughly).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.