Suche Arduino Programmierer für RGB Band WS2812

Guten Abend zusammen,

ich benötige hilfe oder gar einen der mir ein LED Band programmieren kann.
Ich möchte ein led Band WS2812 in mehrere Bereiche unterteilen das unterschiedliche Farbmuster mit Zeitabstimmung zueinander wiedergibt.
Hoffentlich kann mir jemand helfen :slight_smile:

Danke im Voraus und ein schönen Abend

Hilfe bei der Programmierung eines LED-Bandes WS2812

Gerne helfe ich Ihnen bei der Programmierung Ihres LED-Bandes WS2812!

Schritt 1: Festlegen der Anforderungen:

  • Anzahl der Bereiche: Wie viele Bereiche möchten Sie auf dem LED-Band haben?
  • Farbmuster: Welche Farben und Muster möchten Sie in jedem Bereich anzeigen?
  • Zeitabstimmung: Wie sollen die Farbmuster in den verschiedenen Bereichen zeitlich zueinander abgestimmt sein?

Schritt 2: Auswahl der Programmierumgebung:

Es gibt verschiedene Programmierumgebungen, die Sie verwenden können, um Ihr LED-Band zu programmieren.

  • Arduino: Arduino ist eine beliebte Plattform für die Entwicklung von Elektronikprojekten. Es gibt viele Bibliotheken und Beispiele für die Programmierung von WS2812-LED-Bändern mit Arduino.
  • Python: Python ist eine universelle Programmiersprache, die ebenfalls für die Programmierung von WS2812-LED-Bändern verwendet werden kann. Es gibt verschiedene Bibliotheken für Python, die die Ansteuerung von WS2812-LED-Bändern erleichtern.
  • C/C++: C/C++ ist eine leistungsstarke Programmiersprache, die Ihnen die volle Kontrolle über die Ansteuerung Ihres LED-Bandes gibt.

Schritt 3: Auswahl der Hardware:

Neben der Programmierung benötigen Sie auch die folgende Hardware:

  • LED-Band WS2812: Das LED-Band selbst.
  • Mikrocontroller: Ein Mikrocontroller, z. B. ein Arduino-Board, um das LED-Band anzusteuern.
  • Netzteil: Ein Netzteil, um den Mikrocontroller und das LED-Band mit Strom zu versorgen.

Schritt 4: Programmierung des LED-Bandes:

Nachdem Sie die Anforderungen festgelegt, die Programmierumgebung ausgewählt und die Hardware besorgt haben, können Sie mit der Programmierung Ihres LED-Bandes beginnen.

Ressourcen:

Optionale Unterstützung:

Falls Sie Unterstützung bei der Programmierung Ihres LED-Bandes benötigen, können Sie folgende Optionen nutzen:

  • Online-Foren: Es gibt viele Online-Foren, in denen Sie Hilfe bei der Programmierung von LED-Bändern erhalten können.
  • Freelancer: Sie können einen Freelancer beauftragen, Ihr LED-Band für Sie zu programmieren.
  • Workshops: Es gibt Workshops, in denen Sie lernen können, wie man LED-Bänder programmiert.

Ich hoffe, diese Informationen helfen Ihnen bei der Programmierung Ihres LED-Bandes WS2812!

Viel Erfolg!

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden.
Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

Also das post # 2 hört sich für mich an wie von chatGPT geschrieben.

Ja man kann helfen. Jetzt müsstest du mal genauer angeben worin die Hilfe bestehen soll.

fertiges Programm abliefern: gibt es für mehrere Tausend Euro
Ich nehme an so teuer hast du dir das wahrscheinlich nicht vorgestellt.

Die kostenlos Hilfe funktioniert so:

Man kann bei absolut Null anfangen und dann entsprechende spezifische Fragen stellen. Solche Fragen kann man hunderte Stellen. So lange man einen Lernfortschritt und eigenes Engagement bei DIR feststellen wird du immer wieder antworten bekommen.

Ein Beispiel für so eine spezifische Frage:

"Wer kann mir einen Link posten bei dem ich als absoluter Anfänger der noch gar keine Ahnung vom Programmieren hat erste allgemeine Grundlagen über Arduino-Programmierung lernen kann?"

Von manchen Usern hier bekommt man dann entweder Kurzstichworte oder hochtrabende Fachbegriffe als Antwort die dann aber nicht weiterhelfen.

Anderes Beispiel:
"Mit was für Stichworten muss ich denn googeln um für LED-Band mit WS2812 RGBs Programmbeispiele für Ardunio zu finden?"

Es wäre sehr hilfreich wenn du diese Formulierung
mal genauer beschreibst

Also alles mit Zahlen versehen:

  • Wie viele RGB-LEDs sind es insgesamt?
  • wie viele Abschnitte?
  • wie viele verschiedene Fabmuster oder soll die Farbe sich kontinuierlich verändern?
  • nach welchen Zeiten in Minuten, Sekunden usw soll sich etwas ändern?
  • welche Muster gibt es da im zeitlichen Ablauf?

oder was bedeutet "Zeitabstimmung" sonst?

Das macht nur Sinn, wenn du überhaupt schon mal ein Farbmuster auf einem WS2812 ausgegeben hast.
Danach ist die Frage entweder nach der zeitlichen Steuerung oder nach dem logischen Aufteilen in mehrere Bereiche.

Ob das dann 2 oder 5 Bereiche und wie viele LED es in jedem Bereich sind, ist eher zweitrangig, da bin ich anderer Meinung als @StefanL38.

Aber was "Zeitabstimmung" genau bedeutet, ist mir wohl auch unklar.

Also, wie kann man dir helfen? Wie steuerst du bisher deinen WS2812 an und was fehlt dir genau, um weiterzukommen?

Immerhin ist gut, dass du erstmal versuchst, dein Ziel generell zu beschreiben, dann kann man (wenn man das generelle Ziel kennt und versteht) besser beurteilen, wo es an deinem eigenen Lösungsversuch hängt.

Hallo Michael, Hallo Stefan
erst einmal vielen Dank für die netten Nachrichten von euch.
Ja da habt ihr Recht. Ich hätte es auch besser Beschreiben können :slight_smile:
Im Grunde genommen möchte ich es gerne selber versuchen mit dem programm :slight_smile: .
Ich steuere das Ws2812 mit einem Arduino Nano an . Bibliothek Fast Led.
Ich versteh noch nicht so wirklich wie ich die Bereiche definiere und auch ansteuer.
Ich versuche es mal zu erklären

Ich habe ein Led Stripe mit 60 Led´s.
und müsste es in 4 Bereiche unterteilen.
Bereich 1 ( 0-14)
Bereich 2 ( 15- 39)
Bereich 3 ( 40-49)
Bereich 4 ( 50-59)

Wenn das Arduino an ist,muss der Bereich 1 mit z.B TheaterChase und Bereich 3 statisch blau angehen.
Nach einer Zeitverzögerung von z.B 4 Sekunden soll der Bereich 2 Starten. Bereich 1 bleibt an.
Im Bereich 2 soll ein Datenfluss simuliert werden. (2 Led´s in grün und blau sollen von LED 15-39 hindurchfliesen :slight_smile:
Anschliessend muss der Datenfluss im Bereich 2 wieder zurück fliessen ( auch wieder 2 LED´s in blau im Bereich 2 von LED 39 -15).
Wenn der Ablauf fertig ist muss Bereich 3 ausgehen und Bereich 4 (auch statisch blau) angehen.
Wenn der 4te Bereich statisch Blau leuchtet muss Bereich 1 nach 4 Sek ausgehen.
Das war es eigentlich schon.
Ich bin einfach noch nicht fit genug mit der programmierung.
Ich hoffe Ihr könnt mir weiterhelfen.

Schönen Abend

Das ist eigentlich ganz einfach.

Das ist ein Code + wie man den Strip anklemmt.

Du musst nur diesen Teil des Codes umschreiben

  for(int i=0;i<NUMPIXELS;i++){  // 
    pixels.setPixelColor(i, pixels.Color(255,255,255)); // Moderately bright green color.
    pixels.show(); // This sends the updated pixel color to the hardware.
    delay(delayval); // Delay for a period of time (in milliseconds).
  }

Der Code ist eine Schleife

Musst nur folgendes machen.

Du zählst die Anzahl der LED je Abschnitt.

Dann schreibst du für jeden Abschnitt so eine Code ungefähr so.

go_led = Start_led;  // hier mit 0 anfangen
last_led = 10;   // dann  bekommen nur in den Beispiel die LED 1-10 die Farbe zugewiesen
  for(int i=go_led;i<last_led ;i++){  // 
    pixels.setPixelColor(i, pixels.Color(255,255,255)); // Hier die Farbe via RGB-Code angeben 
    pixels.show(); // This sends the updated pixel color to the hardware.
    delay(delayval); // Delay for a period of time (in milliseconds).


go_led = last_led+1;  
last_led = 10 + go_led;   //  Hier bekommen die nächsten 10 die neuen Farben zugewiesen
  for(int i=go_led;i<last_led ;i++){  // 
    pixels.setPixelColor(i, pixels.Color(255,255,255)); // Hier die Farbe via RGB-Code angeben 
    pixels.show(); // This sends the updated pixel color to the hardware.
    delay(delayval); // Delay for a period of time (in milliseconds).
  }

Fertig ist.

Gruß

Pucki

Ps: Ich habe keine WS2812(b) LED's weshalb ich den Code nicht testen kann.

Gruß

Pucki

Sehr schlechtes Beispiel. pixels.show() wird in der Schleife für jede LED aufgerufen.
Besser: Erst alle LEDs setzen und dann nach der Schleife pixels.show() aufrufen.

Gruß Tommy

Edit: Das gilt für komplette Muster. Für nacheinander Anschalten ist das Beispiel ok.

1 Like

OK.

Wie gesagt, der Code ist nicht von mir. Ich habe ihn nur auf die schnelle für den TO angepasst.
Da ich keine WS2812(b) habe, habe ich mich noch nie wirklich damit beschäftigt.

Deshalb danke für die Info.

Weil kaufen werde ich mir die Teile in absehbarer Zeit.

Achja, Ich hatte eigentlich gedacht das ich das schon hätte, aber Action hat andere bei seine LED'Strip für 1.69 (inkl. USB-Stecker + Steuerung) verbaut ;(

Gruß

Pucki

In dem schlechten Beispiel soll halt eine LED nach der anderen angehen. Daher auch noch das delay.

Ok, dann muss man das natürlich so machen.

Gruß Tommy

Hallo,
wenn das eine Animation für einen Bereich sein soll, 10 LED nacheinander einschalten, dann ist auch das delay() schlecht. Damit kann ein zweiter Bereich nicht ebenfalls gleichzeitig animiert werden. Ich denke du solltest gleich millis() verwenden um zeitliche Abläufe zu realisieren.

if(millis()-lastime >= delaytime){
   lasttime=millis();
   pixels.setPixelColor(i, pixels.Color(255,255,255);
   pixels.show();
   i++;
   if (i >=10 ) i=0;
}

ich würde für jede jede geplante Animation eine Function schreiben die als Parameter wenigstens die erste und letzte LED bekommt. Dann kannst Du diese Function unter Umständen mehrfach für unterschiedliche Bereiche nutzen. Zudem kannst Du das einfacher erweitern und ausbauen.

nur so als Idee

lauflicht_auf(start,ende, farbe,zeit)
lauflicht_ab(start,ende, farbe,zeit)
fuellen(start,ende,farbe,zeit)
dimmen_auf(start,ende,farbe,zeit)
dimmen_ab(start,ende,farbe,zeit)

Deiner Phantasie sind da eigentlich keine Grenzen gesetzt.

schau dir mal die Duku an
Doku Fastled

und das CHSV Farbschema , das kannst Du mit einem einzigen Farbwert fast alle möglichen Farben einstellen.

wann Du nun pixels.show() verwendest ist immer so eine Sache. Die Methode überträgt die Daten für den gesamten Streifen auf die Data Leitung und benötigt damit etwas Zeit. Man will sie eigentlich so selten wie möglich aufrufen. Grob immer dann wenn Du eine Veränderung sehen willst braucht es ein pixels.show() dazu.

Die LEDs im LED-Band sind von 0 bis 59 "durchnummeriert".

Wenn jetzt einzelne Bereiche des zu unterschiedlichen Zeiten etwas machen sollen, dann
spricht man die einzelnen LEDs über ihre jeweilige Nummer an. Oder eben auch einen Bereich. Dein Beispiel

Bereich 3 sind die LED-Nr 40-49 es werden Befehle gesendet mache LED 40 bis 49 blau.
Das is ja das dolle dass man über die Nummer jede LED einzeln ansprechen kann.

Wenn das für jeden Bereich ganz unterschiedliche Animationen ein/ausschalten ist
dann muss man das ganz konsequent als nicht blockierendes Timing programmieren.
konsequent nicht blockierend heißt
null mal den Befehel delay()
am besten ganz ohne for-schleifen / while-schleifen
eventuell
while und for-schleifen nur unter ganz speziellen Vorraussetzungen
= minimal blockierend (möglichst kurz blockierend)

@mike1893
Wie würdest du deinen Kenntnisstand in Sachen programmieren einschätzen
Grobeinteilung
a.) gaanz elementare Grundkenntnisse
b.) naja ein bisschen
c.) ich weiß wie man functions, arrays definiert
d.) Ich weiß was pointer sind, ich kann erklären was call be value / call by reference usw. ist

Wenn man das weiß kann man die Antworten und Vorschläge auf deinen Kenntnisstand anpassen

Die Schrift von Doku Fast LED hat eine andere Farbe der Mauszeiger wird zur Hand
aber es ist trotzdem kein Link???

Danke für den Hinweis habs geändert

Doku fastled

Evtl. könnte auch das Wiki von FastLED interessant sein.

Gruß Tommy

8 posts were split to a new topic: Ist es möglich einfach die Timelib.h und Time.h zu übersetzen und die Reihenfolge der Monat , Tag , Zeilen zu ändern?

hab mal versucht das tabelarisch darzustellen.

1                  2                   3                   4                   Zeit
------------------ ------------------- ------------------  ------------------  ------------------  
Theater            -                   blau                -                   0 bis 3
Theater            Datenfluss          blau                -                   4 bis t2
Theater            Datenfluss reverse  blau                -                   t2 bis t3
Theater            -                   -                   blau                t3 bis t4 (=t3+1sec)
-                  -                   -                   blau                t4 bis endlos?

ist das so aus deineer Sicht korrekt? Wenn nicht, was soll anders sein?
Verbleibt das ganze wirklich im letzten Zustand oder soll das durch irgend eine Aktion noch einmal starten?
Wie sieht dein Sketch bisher aus?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.