RGBW Stripe

Moin ich bin neu hier und habe das Thema Arduino noch nicht so richtig verstanden. Für die Schule muss ich einen RGBW Streifen in ähnlichen Farben leuchten lassen wie die Sonne / der Mond im Tagesverlauf leuchten. Hierfür habe ich einen Arduino Mega, eine ReelTimeClock und einen RGBW Streifen mit 144 LEDs (SK6812).
Leider habe ich keine Ahnung wie das Programm dafür aussehen müsste. Ich habe bereits einige Beispielsketches gefunden und getestet allerdings hat keins davon richtig funktioniert. Eins von den Beispielprogrammen befindet sich im Anhang Vielleicht kann mir ja jemand helfen.

test_rgbw.ino (2.19 KB)

also muss auch der zeitverlauf stimmen wie bei einem normaler Tag ? oder soll der Tag/Nacht(Mond) Modus in 5min ablaufen oder wie genau?

144Leds.. du hast schon eine seperate stromversorgung für die leds? ansonsten macht dein arduino nicht lange mit und wird nir die ersten leds korrekt die farbe angezeigt, weil die Leds ab ca 1/3 der Länge schon die Farben verfälscht.. am schluss immer mehr gegegn rot wen der strom zu niedrig wird.

Was hat nicht funktioniert? genauer Bitte... Sketch wirft fehler ab oder leuchtet keine led oder einfach falsch?

Ja der Zeitverlauf sollte in groben Zügen stimmen. Leider habe ich keine Ahnung wie genau das möglich ist oder nicht. Ein Netzteil habe ich natürlich auch sorry habe ich in der Liste vergessen 5V 16A sollten reichen. Zur Sicherheit Speise ich den LED Streifen von beiden Enden ein. Wenn ich das hochgeladene Beispiel richtig verstanden habe sollte der Streifen erst rot dann grün dann blau dann weiß leuchten und dann wieder von vorne. Dieser Ablauf funktioniert nur ab und zu. Zwischendurch ändert dann aber nur der halbe Streifen die Farbe oder einzelne LEDs haben einfach die falsche Farbe. Und ich habe keine Ahnung wie ich das mit dem Tagesverlauf umsetzen soll.

Hallo,

Was heisst funktioniert nicht richtig ? die machen nicht das was Du willst, dann musst Du einen ändern.

oder funktionieren die nicht weil Du das Thema Stromversorgung falsch angepackt hast. Was hast Du für einen Stromversorgung.

Schneide doch erst mal 10 LED´s ab, da kannst Du dann einfacher mit probieren ohne das Thema Stromversorgung. Kann man ja später wieder zusammen löten. Wenn Du viele LED hast musst Du mehrfach +5V und 0V einspeisen.

------Achtung die 5V für die LED auf keinen Fall aus dem UNO nehmen .--------

ich kenne jetzt nur die LIB FastLED etwas, dabei sind einfache Beispiele mit denen man den Umgang mit Farben lernen kann.

Dann heir was zum einlesen

WIKI Fast LED

wenn Du das durchgelesen hast solltest Du Farben einstellen können wie du es willst.

Hi

Woher hast Du denn dieses Stück Code?
Alleine folgende Zeilen:

 for (int i=0; i < 4; i++) {
#ifdef SERIAL_OUT
    serialWrite(colors[0]);
#endif
    setAllPixels(colors[0]);
    strip.show();
    delay(HWAIT);
  }

würden mich doch stark zweifeln lassen, wenn da doch eine Farbe geändert würde.

Du schreibst die Farbe color[0] auf alle Pixel ... ok, in einer Schleife von 0 bis 3, aber IMMER die gleiche Farbe.
Vll. würde Es nicht schaden, wenn Du diesen, DEINEN Sketch etwas verstehen würdest?!?
Versuche Mal, in der Zeile 'setAllPixels(colors[i]);' die Null durch die Zählvariable i zu ersetzen.

Deine Fehlerbeschreibung war äußerst dürftig.
Sofern Du keinen ATtiny85 benutzen möchtest: raus mit dem Zeug (dafür wäre Es von Vorteil, wenn man den Sketch halbwegs versteht).
Schaden tut das ATtiny85-Zeug nicht, macht den Kram nur unleserlicher.

MfG

PS: Schön wäre Es, wenn die Schülerschaft das ganze Elektronik-Geraffel nicht machen MÜSSTE, sondern machen WÖLLTE.
Vll. doch die falsche AG gewählt?
Klar ist es Deine Aufgabe, Das zu machen - also ein MUSS, trotzdem sollte es Dir darum gehen, daß Du Das hinbekommen WILLST - und nicht MUSST.

PPS: Die RTC gibt Dir 'den aktuellen Punkt des Tages'.
In einer Art Tabelle (Array?) könntest Du Dir Farbwerte hinterlegen, wie der Himmel um 'die und die Uhrzeit' so aussieht.
Dann musst Du 'nur noch' die Mischfarbe zwischen Deinen beiden dem Tageszeitpunkt umgebenen Farbwerten berechnen.

da hat der Rentner recht :wink:
ich würde all Meter neu einspeisen.. kommt drauf an wie dicht bepackt deine led Stripe ist.. Also die abstände der LEDS auf dem Strip. gibt welche mit ca nur 3mm abstand und solche mit 1.2cm . teste wiviele LEDS Sauber arbeiten bis zu neu einspeisen musst . normal so ab 1 Meter oder aber 2m neu einspeisen. Siehe Bild.

Ok aber in der Schule werdet ihr ja nicht 24h Zeit haben um zu schauen wie der Modus sich ändert... soll der nicht besser in 10min ablaufen? oder bleibt der Arduino dann in Dauerbetrieb im Schulzimmer?

WS2812B-LED-Strip-Einspeisung.jpg

Diese eine Zeile colors[0] habe ich geändert um zu versuchen das Programm zu verstehen. Original war colors(i). Ich habe versucht den Code so zu verstehen eigentlich dürfte der ja mit der 0 nur in einer Farbe leuchten und auch die maximale Helligkeit ist oben definiert. Mein LED Streifen wechselt trotzdem munter zwischen rot und blau hin und her und auch in. unterschiedlichen Helligkeiten.
Der Arduino bleibt bei mir zu Hause im dauereinsatz. Das ganze soll eine Projektarbeit werden die ich dann entsprechend dokumentieren muss
Der LED Streifen ist nur ein Meter lang und besteht aus 144 LEDs. Dieser wird bereits von beiden Seiten eingespeist von einem 5V Netzteil mit 16A bei 4mm2 kabeln sollte sich der Spannungsfall auch in Grenzen halten.

Jani007:
Diese eine Zeile colors[0] habe ich geändert um zu versuchen das Programm zu verstehen. Original war colors*. Ich habe versucht den Code so zu verstehen eigentlich dürfte der ja mit der 0 nur in einer Farbe leuchten und auch die maximale Helligkeit ist oben definiert. Mein LED Streifen wechselt trotzdem munter zwischen rot und blau hin und her und auch in. unterschiedlichen Helligkeiten.*
Der Arduino bleibt bei mir zu Hause im dauereinsatz. Das ganze soll eine Projektarbeit werden die ich dann entsprechend dokumentieren muss
Der LED Streifen ist nur ein Meter lang und besteht aus 144 LEDs. Dieser wird bereits von beiden Seiten eingespeist von einem 5V Netzteil mit 16A bei 4mm2 kabeln sollte sich der Spannungsfall auch in Grenzen halten.
[/quote]
hmm würde trozdem mal nur einen kurzen teil der strip anschliessen um mal das Stromproblem zu vergessen vorerst. denke bei 144 auf 1m könnte es knapp sein mit einer 2 seiten einspeisung.. würde in der hälfte neu einspeisen. aber zum testen mal nur 5 Leds anschliessen direkt am arduino pin. das mag der verkraften
normal sind abschwächende farben und farbverfälschungen gegen ende des strips darauf zurück zu fü¨hren das die stromversorgung nicht ausreicht da die leds am schluss zu wenig abbekommen

Ok ich werde das morgen mal mit 5 LEDs versuchen aber verstehe ich das richtig das der nur in einer Farbe leuchten dürfte wenn ich colors[0] schreibe?

Hi

4mm² und ein 16A Netzteil sind schon eine beachtliche Hausnummer!
Das Ding haut Dir ALLES Durch, wenn Du irgendwo einen Kurzschluss machst - solltest Du immer im Hinterkopf bedenken!

144 LEDs beidseitig bestromt - ich sehe hier keine Farbveränderung aufgrund Spannungsverlust auf uns zu kommen.
(bei mir sind's eher 5 Meter mit 150 LEDs - auch Die sind, beidseitig bestromt, ganz nett anzuschauen)
Sollte bei mir ebenfalls 4mm² sein, Lautsprecherkabel.

Wenn Du dem ganzen Stripe EINE Farbe zuweist - dann sollte Da wirklich Alles in dieser einen Farbe leuchten.
Hast Du den Anschluß über ein Steckbrett geführt? Vll. hast Du hier einen Wackelkontakt, daß irgend ein Müll durch die LEDs geschickt wird.

MfG

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, NEO_PIN, NEO_PTYPE + NEO_KHZ800)

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, NEO_PIN, NEO_RGBW + NEO_KHZ800);

oder

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, NEO_PIN, NEO_RGBW + NEO_KHZ400);

Nachtrag:

Richtig: NEO_GRBW

So habe das doch jetzt noch versucht das wollte Ich jetzt wissen mit 5 LEDs geht das also wohl doch noch eine dritte Einspeisung dann habe ich ein Problem weniger Danke. Kann mir noch jemand ein Tipp geben wie ich die Farben jetzt gemischt bekomme und wie funktioniert das mit der Tabelle für die unterschiedlichen Uhrzeiten?

ich bin mir nicht sicher ob dass dein problem löst ... dein durcheinander leuchten kann auch andere gründe haben. wie gesagt wurde.. wackelkontakt, störsignale, falscher led Code, zu wenig led angesprochen aber alle vedrahtet, Stromproblem schliesse ich mal aus.. du bis eher viel zu hoch.. ein 5a Netzgerät würde es auch locker machen :slight_smile: Du hast schon der Datenleitung einen 470 Ohm wiederstand vorgeschalten? der ist zwingend.

Ich versuche das morgen einfach mit zusätzlichem Stromanschluss weil die 5 LEDs habe ich genauso angeschlossen wie die 144 und da waren keine Probleme also kann ich ein wackelkontakt oder ähnliches wohl ausschließen. Habe die LEDs auch schon mal nachgezählt sind definitiv 144. brauche ich echt einen 470 Ohm Widerstand? Ich habe was von 100 Ohn gelesen dann versuche ich das auch noch mal

schau mal hier :wink: gute seite. https://www.eerkmans.nl/powering-lots-of-leds-from-arduino/

zwischen 330- 470 Ohm und den ELKO nicht vergessen wen du externe stromquelle nimmst.

Hi,

musst Du nicht wirlich probieren , dennoch würde ich Ihn tauschen, der Widerstand ist nur dazu da das die erste LED nicht stirbt wenn daten vom UP kommen und keine 5V auf dem Strip liegen. Ob allerdings 100 Ohm da reiche glaube ich nicht. Dann könnte der interne Controler der ersten LED sterben. Das Datensignal wird von jeder LED neu aufgearbeitet ist somit von der Länge unabhängig.

Heinz

Benutze Google Translate: Ich war zu faul :slight_smile:

Before connecting NeoPixels to any large power source (DC “wall wart” or even a large battery), add a capacitor (1000 µF, 6.3V or higher) across the + and – terminals as shown above. The capacitor buffers sudden changes in the current drawn by the strip.
Place a 300 to 500 Ohm resistor between the Arduino data output pin and the input to the first NeoPixel. The resistor should be at the end of the wire closest to the NeoPixel(s), not the microcontroller. Some products already incorporate this resistor…if you’re not sure, add one…there’s no harm in doubling up!
Try to minimize the distance between the Arduino and first pixel, so the signal is clear. A meter or two is usually no problem. Much longer and things can become unreliable.
Avoid connecting NeoPixels to a live circuit. If you simply must, always connect ground first, then +5V, then data. Disconnect in the reverse order.
If powering the pixels with a separate supply, apply power to the pixels before applying power to the microcontroller.
Observe the same precautions as you would for any static-sensitive part; ground yourself before handling, etc.
NeoPixels powered by 5v require a 5V data signal. If using a 3.3V microcontroller you must use a logic level shifter such as a 74AHCT125 or 74HCT245. (If you are powering your NeoPixels with 3.7v like from a LiPoly, a 3.3v data signal is OK)
Make sure that your connections are secure. Alligator clips do not make reliable connections to the tiny solder pads on NeoPixel rings. Better to solder a small pigtail wire to the ring and attach the alligator clips to that.
If your microcontroller and NeoPixels are powered from two different sources (e.g. separate batteries for each), there must be a ground connection between the two.
Some of our projects don’t make the above precautions…these are typically small battery-powered devices and power spikes aren’t a big concern. Any project with a lot pixels or a large power source should definitely include the power capacitor and data line resistor.

das ist es doch auch aber halt sehr genau und kompliziert... Die Aquarium Jungs brauchen immer so was... aber frag mich nicht wie da der Code gesteuert wird. ist ein arduino code auch wen es aus dem Rapsberry Forum kommt.

Danke Akropolis aber der Code scheint mir etwas sehr kompliziert. Ich habe jetzt folgende Sachen geändert:

  1. dritter Stromanschluss für die LEDs
  2. Kondensator mit 1000 microfarat an der spannungsversorung
  3. 330 Ohm statt 100 Ohm in der datenleitung
  4. kürzere Kabel zur 1. led
  5. adafruit_NeoPixel Strip = Adafruit_NeoPiixel(NUMPIXELS , NEO_PIN, NEO_RGBW + NEO_KHZ800) geändert

Leider sind immer wieder einzelne Pixel am ausfallen heißt die nehmen einfach die falsche Farbe und oder Helligkeit an.
Und ich habe leider immer noch nicht verstanden wie man jetzt mischfarben erzeugt.

Wie ich Farben mische habe ich jetzt wohl hinbekommen. Kann mir noch jemand ein Tipp geben wie ich die jetzt mit bestimmten Zeiten der ReelTimeClock verknüpfe und wie ich dann die Zwischenwirte berechnen kann. Ich kann ja schlecht für jede Uhrzeit exakte Farbeinstellungen speichern.