maby its because you call tlc.Write() 16 times, each time led() is called.
you only need to do it once.
Ah, yes, I see that also. That makes a lot of sense. So I made the following change and it's made a huge difference - runs much faster now. - thank you.
//Check Values and adjust "current" Value
for (uint16_t i = 0; i < totalleds; i++) {
if (chrgb[i].definedr != chrgb[i].currentr) {
if (chrgb[i].currentr < chrgb[i].definedr) chrgb[i].currentr = (chrgb[i].currentr + fademultipler);
if (chrgb[i].currentr > chrgb[i].definedr) chrgb[i].currentr = (chrgb[i].currentr - fademultipler);
}
if (chrgb[i].definedg != chrgb[i].currentg) {
if (chrgb[i].currentg < chrgb[i].definedg) chrgb[i].currentg = (chrgb[i].currentg + fademultipler);
if (chrgb[i].currentg > chrgb[i].definedg) chrgb[i].currentg = (chrgb[i].currentg - fademultipler);
}
if (chrgb[i].definedb != chrgb[i].currentb) {
if (chrgb[i].currentb < chrgb[i].definedb) chrgb[i].currentb = (chrgb[i].currentb + fademultipler);
if (chrgb[i].currentb > chrgb[i].definedb) chrgb[i].currentb = (chrgb[i].currentb - fademultipler);
}
//Assign modified values to the pwm outputs for each colour led
tlc.setLED(i, chrgb[i].currentr , chrgb[i].currentg , chrgb[i].currentb);
}
tlc.write();
}