Adafruit NeoPixel

Hey,
ich bräuchte mal eure hilfe...

mein Projekt sind 792 Led´s Ws2812b.. aber leider bekomme ich den Effekt nicht hin, wie ich ihn möchte.

wollte den NeoPixel Theatre Chase bearbeiten das ich ein

Lauflicht mit Roten led´s mit etwa 5 led´s Rot und dann 5 aus und wieder 5 an usw..

aber bekomme nur hin das der abstand nur größer wird zwischen den Led´s die aus sind. Sprich 1 led an und 5 sind dazwischen aus.

Hi, zeige uns mal Deinen Sketch, den du bis jetzt hast.

Schreib uns auch gleich mal welchen Arduino Du verwendest.
Grüße Uwe

verwenden tu ich ein nodemcu v3.2 , da Nano oder uno zuwenig Ram hat. (144 led´s sind nur Testzweck, da ich nicht vorort an dem Projekt bin)

#include <Adafruit_NeoPixel.h>
#define PIN D4
#define NUM_LEDS 144
// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
 strip.begin();
 strip.show(); // Initialize all pixels to 'off'
}

// *** REPLACE FROM HERE ***
void loop() {
 theaterChase(0xff,0,0,100);
}

void theaterChase(byte red, byte green, byte blue, int SpeedDelay) {
 for (int j=0; j<10; j++) {  //do 10 cycles of chasing
   for (int q=0; q < 6; q++) {
     for (int i=0; i < NUM_LEDS; i=i+6) {
       setPixel(i+q, red, green, blue);    //turn every third pixel on
     }
     showStrip();
    
     delay(SpeedDelay);
    
     for (int i=0; i < NUM_LEDS; i=i+3) {
       setPixel(i+q, 0,0,0);        //turn every third pixel off
     }
   }
 }
}
// *** REPLACE TO HERE ***

void showStrip() {
#ifdef ADAFRUIT_NEOPIXEL_H
  // NeoPixel
  strip.show();
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
  // FastLED
  FastLED.show();
#endif
}

void setPixel(int Pixel, byte red, byte green, byte blue) {
#ifdef ADAFRUIT_NEOPIXEL_H
  // NeoPixel
  strip.setPixelColor(Pixel, strip.Color(red, green, blue));
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
  // FastLED
  leds[Pixel].r = red;
  leds[Pixel].g = green;
  leds[Pixel].b = blue;
#endif
}

void setAll(byte red, byte green, byte blue) {
 for(int i = 0; i < NUM_LEDS; i++ ) {
   setPixel(i, red, green, blue);
 }
 showStrip();
}

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
Dann ist er auch auf mobilen Geräten besser lesbar.
Das kannst Du auch noch nachträglich ändern.

Gruß Tommy

Versuche mal dies (getestet mit ESP32 und APA102):

void theaterChase(byte red, byte green, byte blue, int SpeedDelay) {
  static uint32_t vorhin = 0;
  static uint16_t led = 0;
  if (millis() - vorhin >= SpeedDelay) {
    vorhin = millis();
    if (led < 4) {
      setPixel(0, red, green, blue);  //turn every third pixel on
    } else {
      setPixel(0, 0, 0, 0);
    }

    showStrip();

    for (uint16_t j = NUM_LEDS; j > 0; j--) {
      strip.setPixelColor(j, strip.getPixelColor(j - 1));
    }
    led = (1 + led) % 10;
  }
}

Bei der großen Zahl LEDs solltest Du möglichst auf APA102 umsteigen, sonst könnten die Frames pro Sekunde abhängig von Deinem Projekt in die Knie gehen.

Hi

Bei der großen Anzahl an LED habe ic h eher die Befürchtung, daß die Spannungsversorgung Dieser eher als Waffe anzusehen ist.
792 LED a 60mA (max) macht 47,52A im worst-case.
Also schon ein etwas ausgefresseneres Netzteil.
Dieses wird diese 50A durch auch noch so dünne Drähte prügeln, wenn Das halt - auch irrtümlich, gefordert wird.
In der Haus-Installation wäre für 50A ein 10mm² zu benutzen - ALLES drunter wird Dir wegbrennen (so mit Feuer und so) oder zumindest verflixt heiß werden, die Isolierung tropft ab, die ganze Kacke geht in Flammen auf.

Bitte bitte - Macht Euch einen Kopf, WAS Ihr Da zusammen bastelt - hinterher ist’s etwas Spät dafür!

MfG

(Ein ‘es leuchten immer nur 10 LEDs zur gleichen Zeit’ ist ein ‘schön gedacht’ - hält den worst-case aber nicht auf - wenn das Netzteil Strom liefern kann, wird Es Das auch tun!)

postmaster-ino:
792 LED a 60mA (max) macht 47,52A im worst-case.
Also schon ein etwas ausgefresseneres Netzteil.

Da muß man schon drüber nachdenken, da stimme ich Dir zu!

Es gibt StepDown-Regler 5V 5A mit einer Eingangsspannung bis 38V, da könnte man 10 Stück gleichmäßig verteilen. Das wäre ein möglicher Ansatz mit kleineren Querschnitten.

agmue:
Da muß man schon drüber nachdenken, da stimme ich Dir zu!

Es gibt StepDown-Regler 5V 5A mit einer Eingangsspannung bis 38V, da könnte man 10 Stück gleichmäßig verteilen. Das wäre ein möglicher Ansatz mit kleineren Querschnitten.

Gute Idee, Man sollte aber auch zwischen den einzelnen Teilen die von den verschiedenen Wandlern versorgt werden einen Schutzwiderstand in die Datenleitung löten. Bei WS2812 sind das 330 Ohm. Bei APA102 hab ich nichts gefunden.

Grüße Uwe

Da würde ich vom gleichen Wert in beiden Leitungen (Daten+Takt) ausgehen.

Gruß Tommy