achso ok na dann fällt das ganze eh aus....ist leider schon alles fest verbaut....
Von dieser Klasse kannst Du nur eine Instanz brauchen (ist auch schon automatisch vorhanden), der Du einen Pin zuweist, über welchen das Signal geschickt wird. Wenn Du die Strips nicht mehr neu verdrahten kannst, dann fällt diese Möglichkeit wahrscheinlich dahin.
In Deinem Code ist aber noch reichlich Verbesserungspotenzial. In paint() z.B. rufst Du nacheinander calculatePartForStar() und dann calculatePxForStar() auf, die beide über den Strip-Array iterieren. Kombiniere die beiden Funktionen zu einer und Du wirst schon einen deutlichen Geschwindigkeitszuwachs haben.
int makeModulo(int number)
{
int returnNumber;
if(number >= 0)
{
returnNumber = number%totalLength;
}
else
{
//modulo für negative zahlen
int absNumber = abs(number)%totalLength;
returnNumber = (-absNumber+totalLength)%totalLength;
}
//Serial.println(returnNumber);
return returnNumber;
}
dies lässt sich kürzer und schneller so schreiben:
number%totalLength;
Der Computer nimmt immer das Vorzeichen des Teiler für das Resultat, was Du mit Deiner komplizierten Berechnung auch machst.
Ein kurze Überlegung zur Geschwindigkeit, die erreicht werden kann: Du hast 128 LEDs mit 3 Farben = 3072 Bits, die bei jedem showStrip() herausgepulst werden müssen. Im besten Fall kannst Du sie mit ca. 300kHz ausgeben, was einer Update-Frequenz von ca. 100 Hz entspricht (unter optimalen Bedingungen). Dies erreichst Du höchstens, wenn Du sonst keine Berechnungen machen musst. Die Optimierung des restlichen Codes könnte sich also durchaus lohnen.