[Arduino] Rotation der RGB Farbkanäle

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    nachdem ich es nicht geschafft habe, meine 2801 Leds individuell anzusteuern , bin ich auf den Arduino gestossen, der das ganze Problemlos machen soll.

    Ohne Programmiererfahrung (kann fast alles lesen und kleinere Fehler beheben - aber nichts von Grund auf neu schreiben) hat es 2 Tage gedauert.
    Am ersten Abend funktionierte die Ansteuerung der Matrix über Glediator, am Tag danach die manuelle Ansteuerung des Rests.

    Jetzt will ich aber die Farbkanäle unabhängig voneinander - parallel laufend - mit unterschiedlicher Schleifenzeit ansteuern, um einen Farbverlauf zu erzeugen, der sich nicht ständig wiederholt.

    Hier fehlen mir aber die theoretischen Grundlagen. Derzeit arbeite ich mit 3 For schleifen, mit integrierter If Schleife, die jeden Kanal befeuert.

    Mein Problem dabei ist, dass durch diese Verschachtelung natürlich die innerste Schleife am häufigsten durchlaufen wird.

    Ich will das also irgendwie "parallelisieren" - ich weiß nur nicht wie.
    Mache ich das über Interrupts? Also irgend nen Zähler laufen lassen und je nach Zählerstand dann interrupten und den jeweiligen Kanals beeinflussen?

    Mein ziel ist folgendes:
    Der erste Farbkanal faded in ca 30 Sec von 0 auf 255 und wieder auf 0
    Der zweite macht das gleiche in 40 Sec
    Der Dritte macht das in 35 Sec

    Bitte gebt mir mal Stichpunkte, wie ich da weiterkomme.

    Für die Programmierprofis unter euch nun was zum lachen - mein "Code", wie er derzeit läuft.

    Einmal editiert, zuletzt von Witzman (8. November 2015 um 09:35)

  • Statt drei Schleifen reicht eine, und in der musst du alle drei Werte gleichzeitig manipulieren. Eine unmittelbare folge daraus ist, dass du pro Durchlauf offensichtlich nicht immer um 1 inkrementieren/dekrementieren kannst, sondern einen gebrochenen Wert nehmen musst, pro Kanal unterschiedlich.

    Hier mal das Konzept als Python-Skript. Du musst fuer deine Variablentypen floats nehmen, sonst hast du keine gebrochenen Werte. Lediglich ganz zum Schluss, bei mir in "clamp", limitierst du auf den Bereich 0..255, und konvertierst du nach int bzw. char.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!