Hallo,
ich bin gerade dabei einen Ring aus LEDs zu programmiere (60LEDs).
Das ganze soll einfach 'schöne' muster darstellen.
Es funktioniert auch schon ganz gut, wobei ich bisher immer nur mit
einer for-Schleife von 0 bis 59 jede LED angesteuert habe.
1 | for(i=0; i<MaxPixel; i++){
|
2 | ledArray[i].r=255;ledArray[i].g=255;ledArray[i].b=255;
|
3 | stripe.sendArray((uint8_t *)ledArray);
|
4 | _delay_ms(250);
|
5 | }
|
Für ein neues Bild möchte ich eine Art Sternschnuppe darstellen. D.h.
die erste LED leuchtet voll und ein paar dahinter immer schwächer
werdend.
Jetzt komme ich zu einem Problem mit der for-schleife. Wenn z.B. die
erste LED der 'Kopf'ist kann ich ja nicht direkt 5LEDs dahinter
ansprechen
dann sähe es ja wie folgt aus (bsp. nur mit einer led als schweif
1 | for(i=0; i<MaxPixel; i++){
|
2 | ledArray[i-1].r=100;ledArray[i-1].g=100;ledArray[i-1].b=100;
|
3 | ledArray[i].r=255;ledArray[i].g=255;ledArray[i].b=255;
|
4 | stripe.sendArray((uint8_t *)ledArray);
|
5 | _delay_ms(250);
|
6 | }
|
mit ledArray[i-1] stürzt natürlich alles ab. Wie kann man es am besten
machen, dass ledArray[-1] = ledArray[59] interpretiert wird?
folgend
ledArray[-2] = ledArray[58]...
man könnte in der schleife natürlich noch ein paar (oder ein paar mehr)
if-bedingungen eintragen. Dann wird natürlich alles sehr unübersichtlich
und wollte es daher vermeiden.
Lars