Angesteuerte LEDs nur weiß statt farbig bei WS2812B

Hallo,

ich bin eben dabei einen 60er WS2811B LED-Stripe mit WS2811 Controller mit meinem Aquino Nano zum laufen zu bringen. Amazon Link zum LED-Stripe: https://www.amazon.de/gp/product/B00GXDBLP6/ref=ox_sc_sfl_title_1?ie=UTF8&psc=1&smid=A1DMSD13LMYETC

Strom per USB und der LED-Streifen hängt direkt am Nano, Data mit 400 Ohm am Stripe. Wenn ich den Testcode "RGBWstrandtest" aus der Adafruit Neopixel library ausführe klappt der Testcode wunderbar.

Für mein erdachtes Projekt wird aber die FastLED library angesteuert, daher wollte ich auch hier ein wenig Testcode ausführen. Und hier hänge ich fest:

#include "FastLED.h"


////////////////////////////////////////////////////////////////////////////////////////////////////
//
// RGB Calibration code
//
// Use this sketch to determine what the RGB ordering for your chipset should be.  Steps for setting up to use:
// * Uncomment the line in setup that corresponds to the LED chipset that you are using.  (Note that they
//   all explicitly specify the RGB order as RGB)
// * Define DATA_PIN to the pin that data is connected to.
// * (Optional) if using software SPI for chipsets that are SPI based, define CLOCK_PIN to the clock pin
// * Compile/upload/run the sketch 

// You should see six leds on.  If the RGB ordering is correct, you should see 1 red led, 2 green 
// leds, and 3 blue leds.  If you see different colors, the count of each color tells you what the 
// position for that color in the rgb orering should be.  So, for example, if you see 1 Blue, and 2
// Red, and 3 Green leds then the rgb ordering should be BRG (Blue, Red, Green).  

// You can then test this ordering by setting the RGB ordering in the addLeds line below to the new ordering
// and it should come out correctly, 1 red, 2 green, and 3 blue.
//
//////////////////////////////////////////////////


#define NUM_LEDS 6

// Data pin that led data will be written out over
#define DATA_PIN A0
// Clock pin only needed for SPI based chipsets when not using hardware SPI
//#define CLOCK_PIN 8

CRGB leds[NUM_LEDS];

void setup() {
// sanity check delay - allows reprogramming if accidently blowing power w/leds
    delay(2000);

      // Uncomment one of the following lines for your leds arrangement.
      // FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);
      FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
      // FastLED.setBrightness(CRGB(255,255,255));
      // FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS);

      // FastLED.addLeds<WS2801, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<SM16716, RGB>(leds, NUM_LEDS);
      //FastLED.addLeds<LPD8806, 9, 10, RGB>(leds, NUM_LEDS);

      // FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
}

void loop() {
   leds[0] = CRGB(255,0,0); 
   leds[1] = CRGB(0,255,0);
   leds[2] = CRGB(0,255,0);
   leds[3] = CRGB(0,0,255);
   leds[4] = CRGB(0,0,255);
   leds[5] = CRGB(0,0,255);
   leds[random8()%NUM_LEDS] = CRGB(0,0,0);
   // leds[10] = CRGB(0,0,0);
   FastLED.show();
   // delay(1000);
   FastLED.showColor(CRGB::Black);
}

Eigentlich müssten doch nun die ersten 6 LED's in den Farben Rot, Grün und Blau zu 1, 2 und 3 LED's leuchten. Tatsächlich leuchten die ersten 6 aber Weiß, während die LEDs dahinter (also bis 60) abwechselnd aus, Grün, Rot, Blau leuchten.

Was mache ich denn falsch? Könnte es auch sein, dass ich noch einen speziellen Controller benötigen würde um den LED-Streifen mit FastLED zu steuern?

Ich bin für jeden noch so kleinen Hinweis dankbar :slight_smile:

#include "FastLED.h"

#define NUM_LEDS 6
#define DATA_PIN 6
CRGB leds[NUM_LEDS];

void setup() {
delay(2000);
FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
}

void loop() {
   leds[0] = CRGB(255,0,0); 
   leds[1] = CRGB(0,255,0);
   leds[2] = CRGB(0,255,0);
   leds[3] = CRGB(0,0,255);
   leds[4] = CRGB(0,0,255);
   leds[5] = CRGB(0,0,255);
   FastLED.show();
   delay(1000);
}

Versuchs mal so, aber Pass deinen Datapin an

mddNsn:
... LED-Stripe mit WS2811 Controller ...

FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);

Das paßt doch nicht, oder?

Hinweis hinsichtlich Energieversorgung: 60 * 60 mA = 3,6 A kann ein Nano nicht, benötigt ein eigenes Netzteil!

Hallo hallo,

vielen Dank für euer Feedback.

@agume
der Titel des LED-Streifen lautet wie folgt: WS2812 B Stripe 1m 60 LED´s mit integrierten WS2811 Controller
Ich weiß allerdings selbst nicht was das genau heißt und ja ich hatte im ersten Post tatsächlich einen Tippfehler dbzgl.

Bzgl. der Energieversorgung hast du natürlich recht. Da bei meinem Projekt aber nur einzelne wenige LEDs und auch nur farbig angesteuert werden, stellt das zunächst kein Problem dar. Am Ende werde ich es aber, wenn alles so läuft wie es soll, dennoch ans Netzteil hängen.

@mpl1337
Danke für das ansehen des Codes, aber ich hatte mit dem Code im unteren Bereich auch schon gespielt. In deinem Fall blinken die ersten 6 Lichter mit aller Kraft weiß im Sekundentakt.

Ich habe bisher quasi alles geschafft, alles was ich versucht hab ging nach einiger Recherche irgendwann dann doch. Ja sogar die LEDs kriege ich zum laufen, nur statt mit der FastLED-Library mit der Adafruit_Neopixel. Aber das macht mich kirre. Mir fällt nicht mal mehr was zum googeln ein :wink:

Ahja noch etwas. Setzte ich bei dem Testcode die Anzahl der LEDs auf 60 blinkt der gesamte Streifen weiß und bei den ersten 6 ist keinerlei Unterschied in Sachen Farbe zu sehen.

Ich habe 9 WS2812B-Leds an einen UNO angeschlossen und mit diesem Sketch erhalte ich eine rote, zwei grüne und drei blaue Leds:

#include "FastLED.h"
#define NUM_LEDS 60

// Data pin that led data will be written out over
#define DATA_PIN A0
// Clock pin only needed for SPI based chipsets when not using hardware SPI
//#define CLOCK_PIN 8
#define VOLTS           5
#define MAX_MA         50

CRGB leds[NUM_LEDS];

void setup() {
  FastLED.setMaxPowerInVoltsAndMilliamps(VOLTS, MAX_MA);
  FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
  leds[0] = CRGB(255, 0, 0);
  leds[1] = CRGB(0, 255, 0);
  leds[2] = CRGB(0, 255, 0);
  leds[3] = CRGB(0, 0, 255);
  leds[4] = CRGB(0, 0, 255);
  leds[5] = CRGB(0, 0, 255);
  FastLED.show();
}

void loop() {
}

Die Leds sind direkt am UNO angeschlossen, daher habe ich den Stromsparparameter ergänzt, macht die Leds aber nur dunkler. Die sind mir eh zu hell zum reinschauen.

@agume du bist mein Held!

Der Fehler war aber ein ganz anderer, der mir erst dadurch aufgefallen ist. Beim kompilieren erkannte er den Wert setMaxPower... nicht. Daher habe ich mir noch mal die Library im Library Manager angesehen und erkannt, dass scheinbar nicht die aktuellste Version angewählt war. Nachdem ich diese installiert hatte ging der alte Code.

Ich habe alle möglichen Versionen überprüft, aber auf die Idee mit der Library kam ich dann irgendwie nicht.

Vielen Dank fürs Augen öffnen :>

mddNsn:
Vielen Dank fürs Augen öffnen :>

Daneben gezielt und doch getroffen, der Tag ist gerettet :slight_smile: