LED-Cube fĂĽr 3D-Animationen

Seite 8: Arduino-Programm

Inhaltsverzeichnis

Mein Programm für den Neopixelwürfel zeigt einige Animationen und kann sicherlich noch optimiert und geschickter programmiert werden. Auch wurden manche Möglichkeiten der zugrunde liegenden Library FastLED nicht genutzt. Zum Download gibt es verschiedene Versionen für verschiedene Boards.

  • FĂĽr den ESP8266 ist ĂĽber den Boardverwalter das Modul Generic ESP8266 zu wählen.
  • FĂĽr den Arduino UNO habe ich die Animationen auf zwei Programme aufgeteilt, bedingt durch die geringe Größe des RAM (dynamischer Speicher).
  • Im Programm fĂĽr einen mit mehr SRAM ausgestatteten Prozessor, etwa ATMega 2560 und ESP8266 sind alle Animationen und ein Demo Mode enthalten.
  • Ich habe auĂźerdem noch das Demo-Programm ColorPalette.ino aus FastLED fĂĽr den NeopixelwĂĽrfel angepasst, es zeigt sehr schöne Farbverläufe.

Auf make-magazin.de gibt es ausfĂĽhrliche Anleitungen, wie man die Arduino-IDE installiert, dort Librarys (Bibliotheken) einbindet und wie man den Boardverwalter fĂĽr den ESP8266 in die Arduino IDE installiert.

Das Programm arbeitet interaktiv. Während eine Animation läuft, können Befehle über den seriellen Monitor abgesetzt werden, die etwa die Geschwindigkeit der Animation bestimmen, den automatischen Farbwechsel an- und ausschalten, Farbeinstellungen und Richtung verändern. Am Programmanfang führt ein Kommentar-Feld die Befehle auf.

Folgende Animationen sind enthalten:

  • WĂĽrfel: Acht LEDs bilden einen kleinen WĂĽrfel, der sich auf festgelegten oder zufallsgesteuerten Bahnen bewegt.
  • Säulen, Schrägsäulen, Wendel: zeigen Drehungen
  • Schlange: Lichtlinie, die zufallsgesteuert durch den WĂĽrfel wandert
  • Funkeln: zufallsgesteuertes farbiges oder weiĂźes Aufblitzen der LEDs
  • Figuren: WĂĽrfelumrisse, Kreuz, Stern – dabei zeigt nur der WĂĽrfelumriss eine Farbanimation.
  • Sprudel: zufallsgesteuerte aufsteigende Lichter, einfarbig oder bunt

Es werden drei Farbarten und das Hue-Saturation-Value-Farbmodell von FastLED verwendet. Alle Werte sind während des Programmablaufs einstellbar, werden aber bei einem Neustart wieder auf die Startwerte zurückgesetzt.

  • Farbe 1 (Hue1, Saturation1, Value1) ist die Hintergrundfarbe, in der eine eigentlich ausgeschaltete LED leicht glimmt – das sieht besser aus als eine völlig dunkle LED.
  • Farbe 2 (Hue2, Saturation2, Value2) ist die sekundäre Farbe fĂĽr eine eingeschaltete LED.
  • Farbe 3 (Hue3, Saturation3, Value3) ist die primäre Farbe fĂĽr eine eingeschaltete LED.

Durch die Unterscheidung in primäre und sekundäre Farbe sind auf einfache Weise zweifarbige Animationen möglich – so kann etwa bei der Schlange der Kopf eine andere Farbe haben als der Körper.

Beim Programmstart wird standardmäßig ein langsamer automatischer Farbwechsel für die Animationen eingeschaltet, der auf Wunsch abschaltbar ist.

Mit Ausnahme der mit Zufallszahlen gesteuerten Animation der Schlage und des Würfels werden in allen Animationen die LEDs über das Auslesen von Arrays geschaltet, in denen deren Nummer steht. Die LEDs sind wie in der Tabelle rechts oben gezeigt durchnummeriert, die Grafik darunter zeigt (zur Erinnerung) nochmal die Nummerierung der Säulen.

Da die oben erwähnte Schlange und der Würfel im Zufallsmodus keine fest programmierte Bahnen verfolgen, sondern per Zufallszahlen gesteuert werden, wird ein einfaches Koordinatensystem zur Positionskontrolle verwendet. Mit einer Übersetzungstabelle in einem Array im Programmcode werden dann die LEDS geschaltet.

Bei der Schlangenaninmation gibt es eine Spezialität: Wenn sich die Schlange in den Schwanz beißen müsste, um weiterzukommen, wird kurzeitig ein rotes Funkeln ausgelöst. Der Programmcode ist weitgehend kommentiert, ich hoffe das die gemischte Verwendung deutscher und englischer Begriffe und Wörter verständlich ist.

Schema des Programmablaufs

Das folgende Flowchart gibt eine Übersicht über das Programm. Es besteht aus einer Ablaufsteuerung, einen Eingabeteil für Befehle und den Animationsprogrammteilen als Funktionen. Zentraler Teil ist in der Hauptschleife (void loop()) der Programmteil millis, über den andere Programmteile und Funktionen aufgerufen werden. Wer mit der Arduino-Programmierung vertraut ist, kann das Gerüst zur Realisierung eigener Animationen nutzen. Und jetzt: Viel Spaß beim Löten, beim Programmieren und beim Vorführen und Betrachten des eigenen Neopixelwürfels! Wenn Sie Ihren eigenen Würfel erfolgreich zum Laufen bekommen haben, schicken Sie bitte eine Mail, Fotos oder Videos an mail@make-magazin.de – und gerne auch Code für eigene Animationen.

Schema des Programmablaufs

(pek)