Ich möchte gerne wie folgt eine Funktion aufrufen, die im Namen eine Variable enthält:
int i = 1;
funktion_i();
^
void funktion_1()
{
...
}
Zum Sinn und Zweck des Ganzen, ich möchte 64 Prozesse gleichzeitig laufen lassen. Und da das nicht geht löse ich die einzelnen Schleifen auf. Ist jetzt ein wenig kompliziert das zu erklären...
Ich habe einen Block von 64 RGB-LEDs seriell in einer Dasy-Chain hintereinander geschaltet.
Wenn man von einer normalen Regenbogenanzeige ausgeht, durchläuft jede LED 1536 Steps.
Jetzt soll LED 1 mit Step1 starten. Gleichzeitig startet LED 2 mit Step 24, LED 3 mit Step 48 usw. bis LED 64 mit Step 1536.
Danach wird jede LED um einen Step inkrementiert. Wenn die Stepzähler 1536 erreicht haben, fangen sie wieder bei 1 an.
Hätte eine Lösung, wenn ich eine Funktion mit einer Variablen im Namen aufrufen könnte und diese Variable inkrementieren könnte. Dazu würde ich 1536 kleine Funktionen schreiben. Ich weiß, dauert länger...
Denke, Du willst die RGB-Werte lieber berechnen, da bei 1536 Zwischenschritten a 3 Byte für R,G,B schon einiges an Speicher weg geht.
Der Farbanteil der Einzelfarben wird ja irgend einer Gesetzmäßigkeit unterliegen - wenn Du Die hast, bist Du fast schon fertig.
Dann per Schleife von 1-64 (oder 0-63) den LEDs die RGB-Werte des Index-Wert übergeben.
LED1 = Index, Index=(Index+24)%1536
LED2 = Index, Index=(Index+24)%1536
...
Danach die LEDs aktualisieren und zum nächsten Index (denke, fängt dann bei 2 an)
Hätte eine Lösung, wenn ich eine Funktion mit einer Variablen im Namen aufrufen könnte und diese Variable inkrementieren könnte. Dazu würde ich 1536 kleine Funktionen schreiben. Ich weiß, dauert länger...
No!
Stopf deine LED Zustände in ein Array, und iteriere mit einem Automaten über das Array.
Dann brauchst du kleine 1500 Funktionen, sondern nur eine(oder vielleicht auch 2).
Hab die Arrays um Faktor 2 reduziert, indem ich nur jeden 2. Wert nehme.
Das menschliche Auge kann diese kleinen Farbunterschiede sowieso nicht wahrnehmen.
Ich verwende dazu den Arduino Mega 2560. Der hat genügend Speicher...