I2SClocklessLedDriver icon indicating copy to clipboard operation
I2SClocklessLedDriver copied to clipboard

Ws2811 issues

Open Xdevel0per opened this issue 1 year ago • 5 comments

The 12v ws2811 LEDs don't work well and keeps flickering even with a logic volt shifter from 3.3 to 5v

Xdevel0per avatar Sep 04 '24 22:09 Xdevel0per

Are you able to address all pixels individually or only in blocks of 3?

If it's individually then you are likely using the WS2815 which has different timings than the WS2811

WS2815 image

WS2812 (close to WS2811 since WS2811 datasheet only has half data-rate listed)

image

zackees avatar Sep 13 '24 23:09 zackees

Hello I have never tried ws2815 but I think it will work with the same timing I 've used for the ws2812. I don't have ws2815 at hand but I am pretty sure it will work.

hpwit avatar Sep 14 '24 21:09 hpwit

@hpwit I'm using 5V WS2811 single-point addressable LEDs throughout a couple of projects with ESP32s. Their timing requirements are different than the WS2812 and WS2815 families. Do you have any plans to support these with the ESP32 or ESP32S3?

LED Type T1H (1 High Time) T0H (0 High Time) T1L (1 Low Time) T0L (0 Low Time) Reset Time
WS2811 700 ± 150 ns 350 ± 150 ns 600 ± 150 ns 800 ± 150 ns > 50,000 ns (50 µs)
WS2812 800 ± 150 ns 400 ± 150 ns 450 ± 150 ns 850 ± 150 ns > 50,000 ns (50 µs)
WS2812B 800 ± 150 ns 400 ± 150 ns 450 ± 150 ns 850 ± 150 ns > 50,000 ns (50 µs)
WS2815 800 ± 150 ns 400 ± 150 ns 450 ± 150 ns 850 ± 150 ns > 280,000 ns (280 µs)

RococoN8R avatar Jan 11 '25 00:01 RococoN8R

If the issue is just the RESET time, then I can patch fastled's version to do this as it's dead simple. The other timings look pretty similar other than reset.

zackees avatar Jan 11 '25 04:01 zackees

Okay. I just did an experimental change to allow an extra wait time. It's hacky but will determine if this is the sole timing issue that is affecting you, which I think it is.

Here's the branch:

https://github.com/FastLED/FastLED/tree/i2s-esp32s3-extra-wait-experiment

As an alternative...

You can also insert an additional delay(...) time in your sketch. Make it 500ms so you are sure everything is flushed out. If this fixes the issue then this means it's just the reset that needs to be fixed. The magic dma stuff that @hpwit has done is a little bit advanced for me as I'm not that familiar to me.

FYI, we have our own copy of the I2S driver since 3.9.9. Here's an example:

https://github.com/FastLED/FastLED/blob/master/examples/Esp32S3I2SDemo/Esp32S3I2SDemo.ino

zackees avatar Jan 11 '25 04:01 zackees