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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von SMNWIZTH (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Hast du schon mal die alternativen Farben getestet?

von Smnwizth (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Hast du mal den aktuellen Code?

von Sven K. (quotschmacher)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.