Forum: Mikrocontroller und Digitale Elektronik WS2811 nur die letzte LED bleibt an


von SMNWIZTH (Gast)


Lesenswert?

Hallo, ich würde gern eine Led Leiste zum Leuchten bringen. Ich habe 
eine etwas unkonventionelle Lösung.

Ich benutze nämlich einen WS2811 Controller aber alle LED die dran 
hängen sind weiss.

Soweit so gut. Es soll Led1 angehen nach 100ms die zweite nach 100ms die 
dritte usw. Das Problem in meinem Programm ist dass die erste angeht, 
nach 100ms geht sie aus und die zweite geht an, nach weiteren 100ms geht 
die zweite aus und die dritte geht an und bleibt an. ich habe 5 
Controller die ich ansteuere. An jedem hängen 3 Leds. Wenn ich komplett 
laufen lasse, bleiben also immer jeweils nur die letzten LEDs an. Die 
beiden davor gehen aus.

Hier ist mein kompliziertes Programm. Kann mir jemand sagen wo bei mir 
der Haken hängt.

#include "FastLED.h"
#define NUM_LEDS 4
#define DATA_PIN 6
#define CLOCK_PIN 13
CRGB leds[NUM_LEDS];
void setup() {

FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);

}

void loop() {

  leds[0] = CRGB::Red;
  FastLED.show();
  delay(100);
   leds[0] = CRGB::Green;
  FastLED.show();
  delay(100);
    leds[0] = CRGB::Blue;
  FastLED.show();
  delay(100);
  leds[1] = CRGB::Red;
  FastLED.show();
  delay(100);
   leds[1] = CRGB::Green;
  FastLED.show();
  delay(100);
    leds[1] = CRGB::Blue;
  FastLED.show();
   delay(100);



    leds[0] = CRGB::Black;
  FastLED.show();
    leds[1] = CRGB::Black;
  FastLED.show();
  delay(300);


}

von yesitsme (Gast)


Lesenswert?

Müssten die Farben nicht red, yellow, white sein (anstatt red, green, 
blue)?

NUM_LEDS ist 4 und du hast 5 Controller?

von Smnwizth (Gast)


Lesenswert?

Wegen den Farben weiß ich nicht genau aber klappt dennoch soweit.

Ja hab noch das alte Programm. Habe 5 Controller. Müsste NUM_LED 5 sein

von Frank L. (Firma: Flk Consulting UG) (flk)


Lesenswert?

Hallo,
Vielleicht fängst Du mal damit an, dass Du das richtige Programm 
postest.
Das was Du hier gezeigt hast, passt nicht zu Deiner Beschreibung.

Gruß
Frank

von HeikoG (Gast)


Lesenswert?

Baue vor der Zeile

 leds[1] = CRGB::Red;

noch

  leds[0] = CRGB::Black;

ein. In dem Moment in dem die erste Led am zweiten WS2811 eingeschaltet 
wird müssen ja auch alle Leds am ersten Controller ausgeschaltet werden 
um ein Lauflicht zu bekommen (wenn das dein Zieln ist).

von Smnwizth (Gast)


Lesenswert?

Das ist mein eben mein Programm. Besser kann ich es leider nicht.

Die leds sollen einfach in 100ms Takt angehen und an bleiben. Das ist 
alles.

von yesitsme (Gast)


Lesenswert?

Hast du schon mal die alternativen Farben getestet?

von Smnwizth (Gast)


Lesenswert?

Das mit den Farben ist sogar logisch. Das ist wirklich besser. Also 
jetzt füllt sich die Leiste so wie ich es wollte vielen Dank.

Leider Blinken die jeweils ersten Leds vom Chip.
Also Rot die erste geht.
Yellow die erste Led geht kurz aus und geht dann mit der zweiten LED an.
White - die ersten beiden LEDs gehen kurz aus und gehen dann alle drei 
an.

Also es funktioniert schon so wie gewollt aber dieses Blinken stört noch 
das Bild. Als ob der Chip sich kurz reseten würde.

von yesitsme (Gast)


Lesenswert?

Hast du mal den aktuellen Code?

von Sven K. (quotschmacher)


Lesenswert?

SMNWIZTH schrieb:
> FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);

hast du schon mal versucht, hier statt 'RGB' einen anderen wert zu 
nehmen? oftmals nehmen die ws2811 die farben auch in anderer reihenfolge 
an

von Smnwizth (Gast)


Lesenswert?

Habe ich bis jetzt noch nicht probiert weil die Reihenfolge stimmt. Also 
es läuft so wie es soll. Nur resetet sich der Chip und die Leds blinken 
anstatt dass die jeweils zweite und dritte Led einfach zusätzlich 
angehen.
Gibt es sowas wie einen "Contnue" Befehl?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.