For my setup:
Controller: Arduino R4 Wifi
Power: 12V, 3000mAh hour battery, connected to Vin pin
1xQwiic LED Stick - brightness set to 1
2xQwiic LED Button, LED’s are off
1xQwiic 14 segment display, brightness set to 1
1xQwiic RFID reader
I have written the code to limit I2C interactions, and to delay in between commands. During the time period i question when the behavior happens, a state change has occurred in the system and a command is sent to each device to set it up for that state, with a delay(10) in between each command. For example, button.clearEventBits(); button.LEDOff(), fourteenSegment.print(“PLAY”), then, this is the current method I’m using to set the LED stick color - it is quite busy due to trying to get it to behave correctly:
qwiicLEDStick.LEDOff();
delay(10);
qwiicLEDStick.setLEDBrightness(1);
delay(10);
for (int i = 0; i < 10; i++)
{
qwiicLEDStick.setLEDColor(i, r,g,b);
delay(3);
}
delay(10);
other state changes are similar, however they just call
qwiicLEDStick.LEDOff();
these commands sometimes result in one and usually only one LED that stays in the previous state.
At the time of posting, I had not disabled any of the pullup resistors on the devices, but everything was working - except that sometimes the LED stick behavior already mentioned.
After posting, on one of my devices i disabled all but one of the I2c jumpers on each device that had them, being very careful with a hobby knife to cut the jumper and using a multimeter/continuity to verify. After that, one of the Qwiic LED button would initialize and when i sent a command to turn on the led button briefly, it “crashed”, i.e. the power light went out on it, the command failed and after that nothing worked. so i had to replace it. Cutting those jumpers must be a very precise operation… Anyways, still testing the LED strip to verify if the behavior is gone or not. It takes a bit to get the whole system up and running to where i can test the behavior in question. I will post results once i have them.
All that said, I do find it interesting that a single command would partially succeed, independent of the i2c jumpers. The behavior I saw was that if all the LEDs are on, and I call LEDOff(), all but one of the lights turn off, usually light 0 or 9 stays on. If the single command gets to the board, wouldn’t you expect that it is not the command getting there that is the problem and something on the board? … I do recognize that the coding of the command in your library you may actually internal to the LEDOff command you may just iterate through each light and send a single command to turn it off, in which case this comment is invalid.