Number of neopixel leds not showing correctly

Hi,
I would like to use a strip of LEDs (WS2812B) that are 55 leds long. but only the first 33 are illuminating.
I am controlling with the examples/LED_roll.lua , swapping to use set_num_neopixel, and adjusting the num_leds. if i set num_leds to anything less than 33 it shows that many as expected but over 33 no more appear. ive also lowered the brightness by halving all the values in the rainbow func so shouldnt be near the current limit.

I’m using rover 4.3.0-beta10 on a H743-SLIM. connected to servo9 in pwm group 4 (as the only thing in that group)
paramsLED.param (18.6 KB)
.

the leds also change on the here2 gps to off once the battery is plugged in (unsure if related)

That’s an awful lot of LEDs if you are sourcing power from a pin on the autopilot itself. Recommend testing with a bench power supply to confirm if you are indeed running into a current/voltage drop issue.

As far as I know, the firmware limit for LEDs on a single channel is 128.

If that was the case of the overload, why would turning down the brightness not help illuminate more than 33?
If it’s high or low it’s always 33

Could be voltage drop in the data line or a bad pixel as well.

This is a known ArduPilot problem - Copter-4.2.0 - Possible problem found that doesn't make the leds work normally (DShot) (luminousbees) · Issue #20816 · ArduPilot/ardupilot · GitHub

2 Likes

Thanks Rishabh, if I’m not using dshot is there a way to overcome this?

I didn’t realize there was a fundamental issue - great pointout!

You could split the LEDs across multiple channels or use an intermediate device like an Arduino and connect as many lights as it will suffer. But if you read the entirety of that issue, there is no resolution for single channel LEDs.

i made a build with the max ms *2 as per this line:

and now all the LEDs work :smiley: