WS2812 Anfängerfrage

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • WS2812 Anfängerfrage

      Hallo,
      als kleine Weihnachtsbastelei möchte ich mich nun zum ersten mal mit den WS2812 LED'S beschäftigen.

      Das kleine Beispiel aus der Bascom Hilfe läuft, aber die Farben passen nicht

      Wwenn man die folgenden 3 Zeilen im Bascom Beispiel ändert dann stimmen die Farben rot, grün und blau



      ############################## so stimmen die Farben ##################################
      Dim Color(4) as Byte

      'Global Color-variables
      R alias Color(_base + 1) : G alias Color(_base + 2) : B alias Color(_base + 3)



      ############################## so stimmen die Farben nicht ############################
      aus Bascom Beispiel
      Dim Color(3) as Byte

      'Global Color-variables
      R alias Color(_base ) : G alias Color(_base + 1) : B alias Color(_base + 2)



      Quellcode

      1. $regfile = "m168pdef.dat"
      2. $crystal = 8000000 '81Mhz Achtung:Fusebit 7 = 0 (Teiler durch 16 = enabled)
      3. $hwstack = 64
      4. $swstack = 24
      5. $framesize = 128
      6. Config Base = 0
      7. Config Rainbow = 1 , Rb0_len = 30 , Rb0_port = PortD , Rb0_pin = 0
      8. ' ^ connected to pin 0
      9. ' ^-------------- connected to portB
      10. ' ^-------------------------- 2 leds on stripe
      11. ' ^------------------------------------- 1 channel
      12. Dim Color(3) as Byte
      13. 'Global Color-variables
      14. R alias Color(_base) : G alias Color(_base + 1) : B alias Color(_base + 2)
      15. 'CONST
      16. const numLeds=30
      17. '----[MAIN]---------------------------------------------------------------------
      18. Dim n as Byte
      19. RB_SelectChannel 0 ' select first channel
      20. R = 0 : G = 100 : B = 0 ' define a color
      21. RB_SetColor 0 , color(1) ' update leds
      22. RB_Send
      23. Do
      24. For n = 1 to Numleds-1
      25. rb_Shiftright 0 , Numleds 'shift to the right all leds except the last one
      26. Waitms 10
      27. RB_Send
      28. Next
      29. For n = 1 to Numleds-1
      30. rb_Shiftleft 0 , Numleds 'shift to the left all leds except the last one
      31. Waitms 10
      32. RB_Send
      33. Next
      34. Loop
      Alles anzeigen
    • Hallo Climbi,

      es gibt wohl unterschiedliche Ausführungen der WS2812b, oder besser gesagt von den unterschiedlichen Nachbauten. Es stimmt einfach die Farbreihenfolge nicht überein. Kommt leider öfter vor und ist besonders ärgerlich, wenn man Strips unterschiedlicher Hersteller kombinieren möchte. :cursing:

      Wo hast Du Deine WS2812b gekauft?

      EDIT: Oh Mist, seh ich jetzt gerade: Hast Du evt die WS2812b's, die auch eine weiße LED mit drin haben (also rot, grün, blau UND weiß)? Die nennen sich z.B. SK6812 RGBW


      EDIT 2:

      Hab gerade Deinen Code nochmal etwas genauer betrachtet.
      Der Fehler könnte in der Kombination aus
      Config Base = 0 und
      RB_SetColor 0 , color(1)
      liegen.

      Schreib mal
      RB_SetColor 0 , color(base)
      oder
      RB_SetColor 0 , color()
      zusammen mit den ursprünglichen Angaben aus der Hilfe
      R alias Color(_base ) : G alias Color(_base + 1) : B alias Color(_base + 2)
      dann müsste es gehen.

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von R2D2 Bastler ()

    • Hallo,
      cool, ja jetzt stimmen die Farben.
      Ich habe jetzt mal eine schöne Basis um die einzelnen Befehle zu testen und zu verstehen.
      Und wenn ich mal alles verstanden habe muss ich mir noch eine schöne Aufgabe suchen :)

      Ein ganz großes Lob an den Entwickler (Galaht) dieser Lib.
      Und natürlich auch vielen Dank für die schnelle Beantwortung an R2D2Bastler.
      Viele Grüße
      Climbi

      Anbei der Code der bei mir funktioniert.
      Vielleicht nützt das ja einem anderen WS2812b Anfänger

      Quellcode

      1. $regfile = "m168pdef.dat"
      2. $crystal = 8000000 '8Mhz Achtung:Fusebit 7 = 0 (Teiler durch 16 = enabled)
      3. $hwstack = 64
      4. $swstack = 24
      5. $framesize = 128
      6. 'Config Base = 0
      7. Config Rainbow = 1 , Rb0_len = 30 , Rb0_port = PortD , Rb0_pin = 0
      8. ' ^ connected to pin 0
      9. ' ^-------------- connected to portB
      10. ' ^-------------------------- 2 leds on stripe
      11. ' ^------------------------------------- 1 channel
      12. Dim Color(4) as Byte
      13. 'Global Color-variables
      14. RB_SetColor0,color()
      15. R alias Color(_base) : G alias Color(_base + 1) : B alias Color(_base + 2)
      16. 'CONST
      17. const numLeds=30
      18. '----[MAIN]---------------------------------------------------------------------
      19. Dim n as Byte
      20. RB_SelectChannel 0 ' select first channel
      21. 'rot grün blau
      22. R = 100 : G = 0 : B = 0 ' define a color
      23. RB_SetColor 0 , color(1) ' update leds
      24. RB_Send
      25. Do
      26. For n = 1 to Numleds-1
      27. rb_Shiftright 0 , Numleds 'shift to the right all leds except the last one
      28. Waitms 100
      29. RB_Send
      30. Next
      31. For n = 1 to Numleds-1
      32. rb_Shiftleft 0 , Numleds 'shift to the left all leds except the last one
      33. Waitms 100
      34. RB_Send
      35. Next
      36. Loop
      Alles anzeigen
    • Hallo,
      nun nach den ersten erfolgreichen Tests suche ich nach einem sinnvollen Einsatzgebiet.
      Eine Idee währe, eine Leselampe bei welcher ich die Farbtemperatur individuell einstellen kann.

      Vielleicht hat ja jemand Erfahrung hiermit.

      z.b.
      -> macht WS2812 im Zusammenhang mit dem Einsatzzweck "Leselampe" Sinn ?
      -> gibt es eventuell fertige LED Lampeneinheiten für Eigenbau die man individuell einbauen
      und ansteuern kann?
      Bin für jeden Tipp dankbar.

      By the way.
      Habe ein voll funktionfähiges Hameg 2 Kanal Oszilloskop HM203 welches ich nicht mehr benötige zu verschenken.
      Falls jemand Interesse hat, gerne bei mir melden.
    • Hallo,
      habe schon seit längerem ein USB Scope und das reicht mir.
      Das Hameg steht einfach dumm rum und es wenn es jemand brauchen kann ist das doch schön.
      Das mit der Spende an das Forum können wir gerne machen. Das soll dann aber der machen der es bekommt.
      Ich übernehme die Versandkosten. Das Forum finde ich gut und das ist ja alles nicht umsonst.
      Ich habe aktuell 2 Bewerbungen.
      Die Spielregeln sind so:
      Der Zuschlag bekommt der mit den meisten oder besten* Aktivitäten in diesem Forum (*nach meiner Meinung)
      Ich verschicke dann das Scope auf meine Kosten innerhalb Deutschlands
      (vermutlich erst im neuen Jahr, die Post hat aktuell genug zu tun :)
      Die Entscheidung treffe ich Ende dieser Woche. Ich nenne hier dann den Nickname des Glücklichen.
      Der Beschenkte macht eine Spende an das Forum so wie er will.
      Gruß Climbi
    • Climbi schrieb:

      Der Zuschlag bekommt der mit den meisten oder besten* Aktivitäten in diesem Forum (*nach meiner Meinung)

      Climbi schrieb:

      Der Beschenkte macht eine Spende an das Forum so wie er will.
      Ich fände es besser, das Teil einfach hier im Basar anzubieten, mit einen Mindestbetrag.
      Wer weiß, ob deine Wahl den richtigen trifft, also, ob er das auch will?
      (Ich wäre z.B. so ein Kandidat, weil ich schon ein solches Gerät habe)
    • @Climbi schön, dass du was verschenken willst, auch sehr schön, wenn das Forum was davon hat. Ich würde es aber für den Beschenkten anonym machen, einfach um ihn nicht in zu großen Zugzwang zu bringen. Ein 'der hat's bekommen, schauen wir mal, was er jetzt spendet' würde ich nicht machen. Such dir einen von den Bewerbern raus und mach den Rest per privater Nachricht.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • o.K. anonym kann ich gerne machen und die Auswahl mache ich natürlich nicht aus allen Forumbeiträgen
      sondern aus denen die sich bei mir per privater Nachricht gemeldet haben. (war nicht ganz verständlich geschrieben)
      Aktuell gibt es 2 Interessenten. Das mit dem Basar wäre auch möglich gewesen, habe ich aber nicht dran gedacht.
      Ich denke aber, dass es so auch passt.


      Ich erlaube mir hier auch noch mal meine eigentliche Frage zu stellen.

      Nun nach den ersten erfolgreichen Tests suche ich nach einem sinnvollen Einsatzgebiet für meine WS2812 LED's
      Eine Idee währe, eine Leselampe bei welcher ich die Farbtemperatur individuell einstellen kann.

      Vielleicht hat ja jemand Erfahrung hiermit.

      z.b.
      -> macht WS2812 im Zusammenhang mit dem Einsatzzweck "Leselampe" Sinn ?
      -> gibt es eventuell fertige LED Lampeneinheiten für Eigenbau die man individuell einbauen
      und ansteuern kann?
      Bin für jeden Tipp dankbar.
    • ich halte die ws2812 als Beleuchtung für zu schwach, was die Lichtleistung anbelangt. Als Effektbeleuchtung und für irgendwelche Anzeigen sind die ok.
      Ich weiß jetzt nicht, wie deine mechanischen Möglichkeiten sind, wenn du mit den ws2812 7-Segmente aufbaust und mit denen dann eine Temperaturanzeige, dann kannst du die Anzeigenfarbe an die Temperatur anpassen. Blos mal so dahin gedacht...
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • o.K. die farb- angeglichene Temperaturanzeige ist eine nette Idee, die für mich
      auch softwaretechnisch reizvoll ist. Die Idee ist gut, die merke ich mir. Danke.

      Falls noch jemand gute Gedanken zu einer Eigenbau Leslampe hat gerne her damit.
      Eine solche (kabellose, Akku gespeiste) Lampe fehlt bei uns nämlich noch.

      Das Design für den Standfuß habe ich im Kopf, aber die Leuchtquelle fehlt noch.
      Eine Möglichkeit (ganz ohne Bascom und Lötkolben) wäre als Lichtquelle eine Stirnlampe zu verwenden.
      Je mehr ich mich nämlich mit dem Thema beschäftige, ums mehr ahne ich, dass es bei einer guten Lampe
      noch einiges mehr zu beachten gibt als die LED's
    • hier hab ich mal was probiert, die Farben waren aber zur Unterscheidung von Innen-, Aussen-, Min- und Maxtemperatur.
      Thermometer mit WS2812 Großanzeigen
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Die Beleuchtung aka Leselampe finde ich für die WS2812 zu banal.
      Die Helligkeit reicht bestimmt, aber Farbe braucht man doch nicht zum Lesen?

      Es gibt schönere Projekte wie eine Wortuhr oder die vorgeschlagene Anzeige mit Farbwechsel.
      Auch die Eclipse-Uhr war mal hier ein Thema.

      Ich hab mal ein paar Streifen in eine Kravatte eingebaut und angesteuert, das war der Kracher bei der Weihnachtsfeier.
    • Hallo Michael,
      mit der Krawatte hast Du mich auf eine Idee gebracht.
      Das gibt jetzt ein Geburtstagsgeschenk für einen Moto Guzzi Fahrer.
      Die Italienischen Landesfarben fahren auf einer Krawatte als Gruppe hin und her.
      Manchmal gibt es eine Panne (bei alten Guzzis nicht so selten :-() und ein Pixel bleibt stehen.
      Diese Pixel tuckert dann langsam hinter her.
      Der einfache Code steht, eine kleine Controllerplatine habe ich auch, wo ich aber noch schwanke ist
      bei der Spannungsversorgung (Batterie)
      Wie hast Du das gelöst ?
      Zusätzliche Frage zur Ansteuerung.
      Gibt es außer der Bascom Hilfe noch irgendwo Beispiele zu den einzelnen Befehlen.
      Ich möchte z.B. am Ende der Show eine ganze Gruppe von LED's mit unterschiedlichen Farben
      ganz langsam abdunkeln. Das wird bei mir ein ziemliches Code gewurschtel.
    • Das "Abdunkeln" der LEDs könnte man u.a. mit Rb_subcolor machen. Damit ziehst Du von den gesetzten Farbwerten immer einen bestimmten Wert ab. Es bleibt aber immer das Problem, dass man nicht jeden Farbton bis zum Ende sauber ausdimmen kann. Zum Verständnis ein Beispiel (Pseudocode):

      Bei jedem Aufruf von Rb_subcolor wird vom Rotwert der Wert 1 abgezogen, solange bis er auf 0 ist. Hier kann man sauber bis zum Schluss dimmen.

      BASCOM-Quellcode

      1. Dim Abzugswert(3) as Byte
      2. Abzugswert(_base) = 1
      3. Abzugswert(_base+1) = 0
      4. Abzugswert(_base+2) = 0
      5. Rot = 100
      6. Gruen = 0
      7. Blau = 0
      8. Rb_subcolor N , Abzugswert()



      Im folgenden Beispiel wird bei jedem Aufruf von Rb_subcolor vom Rot- und Grünwert der Wert 1 abgezogen. Allerdings wird zum Schluss hin Grün bereits auf 0 stehen, während Rot noch auf 35 steht. Der Farbton ändert sich also zum Schluss hin in Richtung Rot.

      BASCOM-Quellcode

      1. Abzugswert(_base) = 1
      2. Abzugswert(_base+1) = 1
      3. Abzugswert(_base+2) = 0
      4. Rot = 100
      5. Gruen = 65
      6. Blau = 0
      7. Rb_subcolor N , Abzugswert()


      Man kann es bis zu einem gewissen Grad noch "vertuschen" (indem man z.B. die Abzugswerte in Abhängigkeit der gesetzten Farbwerte berechnen lässt), aber kurz vor Schluss muss man Kompromisse eingehen. Selbst bei einem berechneten Abzugswert kann bei gesetzten Farbwerten von z.B.

      Rot = 250
      Gruen = 150
      Blau = 50

      das Verhältnis der Farbanteile nur bis zu

      Rot = 5
      Gruen = 3
      Blau = 1

      aufrecht erhalten werden. Weiter runterdimmen geht nicht, da bei weiterer Reduzierung erst der Blauwert und dann auch noch der Grünwert verschwinden wird.