Qwiic LED Stick doesn't like to do what it's told

I have about 10 of these in use in a project, each with their own controller. Randomly, some of the pixels don’t do what they are commanded. For example, if all the pixels are off, i can call setLEDColor() and 9 out of 10 of the pixels follow the command, but one doesn’t. Or if they’re all on, and I call LEDOff(), 9 out of 10 will turn off, but one remains on. It is random, sometimes everything works, and sometimes it doesn’t. I’ve tried things like calling my action, waiting a few milliseconds and repeating the same action, and the results don’t improve. I’ve verified i don’t have other I2C operations going on stomping on any commands. Any ideas how to get reliable behavior out of these?

Odd…I’d wonder if something isn’t being set correctly in the array within the code. Are there any other devices on the i2c bus?

There are several other devices on the bus. All qwiic devices. Led button, RFID reader, 14 segment display.

If you haven’t already, you need to disable all except one set of i2c pull-up resistors on the bus (see how in the hardware section of each device’s hookup guide…in general you just sever the trace on the board that says “i2c” to disable the circuit)

Can you confirm, all but one really means to disable one jumper as there are only 2 total.

? You listed 4 (LED stick, LED button, RFID reader, 14-segment)
But yes…all but one

Ok, so after some more digging we found that adding a delay of 100 or more seems to work fine (the example doesn’t use a delay at all!)

Try this’n Example07_Cycle_Rainbow_MOD.ino · GitHub