Strip in Teilen deklarieren.

Hallo Leute,

Ich hab ein Project mit ca. 1500 WS2812b LED,'S es funktioniert auch alles soweit.

Nun zum Problem:
Ich benutze 8 Pins auf dem Arduino Mega und habe z.B. An Pin 6 eine Holzwand die rundum beleuchtet ist und in der Mitte eine Schriftzug hat
Nun ist der Schriftzug LED 0 bis 104 und der Rand 105 bis 303.
Ich würde jetzt gerne den Rand eine Random aufleuchten programmieren. Dem Schriftzug jedoch nicht

Ist es möglich Teile vom strip als ein Adafruit_NeoPixel xxx zu deklarieren?

z. B.

Adafruit_NeoPixel stripA= Adafruit_NeoPixel(20, 6, NEO_GRB + NEO_KHZ800);

Pixel 1 bis 104 vom Strip

Und

Adafruit_NeoPixel stripB = Adafruit_NeoPixel(20, 6, NEO_GRB + NEO_KHZ800);

Pixel 105 bis 303

Damit es vom Programmieren etwas einfacher wird.

imho nein.

Nur wozu auch. Was wird da einfacher?
Mach dein Random über Pixel 105 und 303 und die Sache ist geklärt.

Oder wenn du zwei Objekte haben willst, teile den Stripe und lege eine zweite Datenleitung an die 105-303.

Hallo,

Für jeden Teil eben Startnummer und Anzahl festlegen und Deinen Funktionen mitgeben, die müssen dann eben nur diesen Teil des LED-Arrays passend setzen. show() muß sowieso immer die Daten für alle LEDs rausschicken.

Gruß aus Berlin
Michael

....Geht doch ganz einfach!?!

Du adressiert mit zwei Variablen 'a' und 'b'

Der Schriftzug ist A mit 0 bis 104.
Der Rahmen ist B mit 0 bis 198.

Auf B musst du nun immer nur noch konstant 105 dazuaddieren, denn hast du die 105 bis 303

Lieben Gruß,
Chris

noiasca:
imho nein.

Nur wozu auch. Was wird da einfacher?
Mach dein Random über Pixel 105 und 303 und die Sache ist geklärt.

Oder wenn du zwei Objekte haben willst, teile den Stripe und lege eine zweite Datenleitung an die 105-303.

Danke euch erst mal für eure Antworten. :slight_smile:

Wenn ich ein Rendom mache wie z. B. aus diesem Beispiel

void loop() {
Twinkle(0xff, 0, 0, 10, 100, false);
}

void Twinkle(byte red, byte green, byte blue, int Count, int SpeedDelay, boolean OnlyOne) {
setAll(0,0,0);

for (int i=0; i<Count; i++) {
setPixel(random(NUM_LEDS),red,green,blue);
showStrip();
delay(SpeedDelay);
if(OnlyOne) {
setAll(0,0,0);
}
}

delay(SpeedDelay);
}

Wie mach ich des jetzt das ich nur ab LED 105 das Rendom anwenden. Ich hab da grad irgendwie nen Hänger.
Wenn ich immer 105 dazu rechne dann macht der die Led’s die nach 303 kommen an das soll er aber in diesem Moment nicht.

Versuche mal setPixel(random(105, 304),red,green,blue);

agmue:
Versuche mal setPixel(random(105, 304),red,green,blue);

Danke das hat super funktioniert, vielen Dank nochmals.

Bitte gerne, ich freue mich immer über Rückmeldungen :slight_smile: