Code für WS2812b LED -

Hallo,

bin schon seit einiger Zeit mit dem Arduino und dem WS2812b am Experementieren und benötige eure Hilfe :

Plan ich möchte wie bei den neuen Audi Modellen das Dynamische Blinklicht relalisieren... heisst : Eine Reihe von LED ( beliebige Anzahl wählbar) soll nacheinander angehen und am ende wieder aus (delay sollte bis wieder leuchten der LED's ebenfalls einstellbar sein).

Wer kann mir mit Beispiel Sketch helfen ? Ich bin Neuling und möchte eine Basis haben und selber an den Werten experimentieren.

Besten Dank im Vorraus

Willkommen im Forum!

Die Bibliothek FastLED hat ein paar Beispiele, mit denen Du spielen kannst. Den Rest bekommst Du selbst hin, sonst nochmal fragen.

Etwas Overkill, aber hier habe ich weiße Lichtpunkte erzeugt, wenn ein PIR eine Bewegung meldet. Abgespeckt und immer wiederholt ergibt das den Lauflicht-Blinker.

Ich benutze APA102C, die brauchen eine etwas andere Initialisierung wie die WS2812B. Sonst ist aber alles gleich.

Hallo und danke für deine Antort , habe aber dies hier gefunden ... und es kommt dem schon sehr nahe .... nur was muss ich am Code ergänzen das wenn alle im Stripe (40) leuchtenden LED wieder ausgehen und die Routine erneut startet ... krönung wäre wenn ich die pausenzeiten noch einstellen könnte .....

// NeoPixel Ring simple sketch (c) 2013 Shae Erisson
// released under the GPLv3 license to match the rest of the AdaFruit NeoPixel library

#include <Adafruit_NeoPixel.h>
#ifdef AVR
#include <avr/power.h>
#endif

// Which pin on the Arduino is connected to the NeoPixels?
// On a Trinket or Gemma we suggest changing this to 1
#define PIN 6

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 40

// When we setup the NeoPixel library, we tell it how many pixels, and which pin to use to send signals.
// Note that for older NeoPixel strips you might need to change the third parameter--see the strandtest
// example for more information on possible values.
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

int delayval = 5; // delay for half a second

void setup() {
pixels.begin(); // This initializes the NeoPixel library.
}

void loop() {

// For a set of NeoPixels the first NeoPixel is 0, second is 1, all the way up to the count of pixels minus one.

for(int i=0;i<NUMPIXELS;i++){

// pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
pixels.setPixelColor(i, pixels.Color(255,70,0)); // Moderately bright green color.

pixels.show(); // This sends the updated pixel color to the hardware.

delay(delayval); // Delay for a period of time (in milliseconds).

}

Wie wär's, wenn Du sie am Ende einfach ausschaltest? :o

Das sollte eigentlich kein Problem für Dich sein, wenn Du Dir mal die Doku zur Lib anschaust.

Hallo Klaus ...

aber wie ? Welche Doku ? Ich möchte das sie einfach wieder von Anfang anfangen und als schleife durchläuft .. wie gesagt optimal wenn ich die schleifenpausen noch einstellen könnte ...

Bin absoluter Neuling ...

Naja, immerhin haste's bis hier in's Forum geschafft ...

Schau mal hier, das könnte helfen.

Und dann empfehle ich: lerne die Basics. Die IDE ist voll davon - und dann ran an die Stripes.

In einer zweiten Schleife auf Schwarz oder aus oder pixels.Color(0,0,0) setzen.

der "Strip.Show(); schaltet meinen Strip aber nicht ab ...

agmue:
In einer zweiten Schleife auf Schwarz oder aus oder pixels.Color(0,0,0) setzen.

könntest du mir meinen Code so ergänzen wie ich ihn benötige ?

Ich mache mit der Lib nichts. Das am Ende ergänzen (ungetestet):

for(int i=0;i<NUMPIXELS;i++){
    pixels.setPixelColor(i, pixels.Color(0,0,0));
    pixels.show(); // This sends the updated pixel color to the hardware.
    delay(delayval); // Delay for a period of time (in milliseconds).
  }

agmue:
Ich mache mit der Lib nichts. Das am Ende ergänzen (ungetestet):

for(int i=0;i<NUMPIXELS;i++){

pixels.setPixelColor(i, pixels.Color(0,0,0));
    pixels.show(); // This sends the updated pixel color to the hardware.
    delay(delayval); // Delay for a period of time (in milliseconds).
  }

Danke , aber dann fängt jede led einzeln zu leuchten und springt auf die nächste ... die vorherige erlischt dann ....

aber der Sketch fängt in diesem fall immer von vorne an ...

Ich sags nochmal: fang mit den Basics an

LEDs gezielt ansteuern, wenn das fluppt ist der Rest einfach.
Schleifen schaden auch nicht.

Was hast Du schon an's Laufen gebracht?

Klaus_ww:
Ich sags nochmal: fang mit den Basics an

LEDs gezielt ansteuern, wenn das fluppt ist der Rest einfach.
Schleifen schaden auch nicht.

Was hast Du schon an's Laufen gebracht?

wie gesagt Neuling (absolut) ... learning bei doing ...

der Code oben läuft .. nur stoppt nach dem alle 40 leds leuchten ... und fängt die gleiche schleife nicht von vorne an ... ich hätte wie erwähnt noch gerne das ich zwischen den schleifen den delay einstellen kann ...

Fange garnicht erst mit delay() an.

Du solltest besser die millisekunden zählen und wenn eine bestimmte Zahl an millis() abgelaufen ist die nächste Aktion auslösen und dabei den Zähler wieder auf 0 setzen, damit er wieder die nächste Zeitspanne messen kann.

Man kann dafür Blink without delay anschauen... da gubt es auch deutschsprachige Erläuterungen was da passiert.

DeepWater:
wie gesagt Neuling (absolut) ... learning bei doing ...

Um so wichtiger ist es, wie Klaus_ww schreibt, lerne die Basics.
Nur kopierter Code hilft da leider sehr wenig. Du musst es auch verstehen.

HotSystems:
Um so wichtiger ist es, wie Klaus_ww schreibt, lerne die Basics.
Nur kopierter Code hilft da leider sehr wenig. Du musst es auch verstehen.

auch Dir Danke für die Information ... aber mir hilft es besser wenn ich sehe wie man es macht ... kannst Du helfen ... ?

DeepWater:
auch Dir Danke für die Information ... aber mir hilft es besser wenn ich sehe wie man es macht ...

Wenn du dir die Basics ansiehst und die verschiedenen Beispiele durchprobierst, siehst du es auch.

kannst Du helfen ... ?

Wenn du deinen aktuellen Sketch hier postest, werde ich es versuchen.

Bitte den Sketch in Code-Tags (Schaltfläche </> benutzen) rein stellen.

HotSystems:
Wenn du dir die Basics ansiehst und die verschiedenen Beispiele durchprobierst, siehst du es auch.

Wenn du deinen aktuellen Sketch hier postest, werde ich es versuchen.

Bitte den Sketch in Code-Tags (Schaltfläche </> benutzen) rein stellen.

Hallo ,

also das wäre der Code den ich in den Beispielen gefunden habe .. der aus meiner sicht passt .. nur eben soll er es in einer schleife immer wieder spielen und die pausen dazwischen möchte ich selber bestimmen.

Derzeit leuchten alle LED (w2812b) hintereinander auf bis die 45. led erreicht ist. dann bleiben alle leuchtend...
Danach sollen Sie aber alle erstmal wieder ausgehen und der Code erneut anfangen ....

Danke vorab ....

DeepWater:
also das wäre der Code den ich in den Beispielen gefunden habe .. der aus meiner sicht passt .. nur eben soll er es in einer schleife immer wieder spielen und die pausen dazwischen möchte ich selber bestimmen.

Welcher Code, ich sehe keinen.

Und aus welchen Beispielen meinst du?

Ich möchte, dass du den Sketch hier postest, den du bisher nach den vielen Vorschlägen angepasst hast.

// NeoPixel Ring simple sketch (c) 2013 Shae Erisson
// released under the GPLv3 license to match the rest of the AdaFruit NeoPixel library

#include <Adafruit_NeoPixel.h>
#ifdef AVR
#include <avr/power.h>
#endif

// Which pin on the Arduino is connected to the NeoPixels?
// On a Trinket or Gemma we suggest changing this to 1
#define PIN 6

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 45

// When we setup the NeoPixel library, we tell it how many pixels, and which pin to use to send signals.
// Note that for older NeoPixel strips you might need to change the third parameter--see the strandtest
// example for more information on possible values.
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

int delayval = 15; // delay for half a second

void setup() {
// This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket
#if defined (AVR_ATtiny85)
if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif
// End of trinket special code

pixels.begin(); // This initializes the NeoPixel library.
}

void loop() {

// For a set of NeoPixels the first NeoPixel is 0, second is 1, all the way up to the count of pixels minus one.

for(int i=0;i<NUMPIXELS;i++){

// pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
pixels.setPixelColor(i, pixels.Color(255,70,0)); // Moderately bright green color.

pixels.show(); // This sends the updated pixel color to the hardware.

delay(delayval); // Delay for a period of time (in milliseconds).

}
}