Inhaltsverzeichnis:

RGB LED Cube mit Bluetooth App + AnimationCreator - Gunook
RGB LED Cube mit Bluetooth App + AnimationCreator - Gunook

Video: RGB LED Cube mit Bluetooth App + AnimationCreator - Gunook

Video: RGB LED Cube mit Bluetooth App + AnimationCreator - Gunook
Video: RGB LED Cube with Bluetooth App 2024, November
Anonim
RGB-LED-Würfel mit Bluetooth-App + AnimationCreator
RGB-LED-Würfel mit Bluetooth-App + AnimationCreator

Dies ist eine Anleitung zum Bau eines 6x6x6 RGB-LED (Common Anodes) Cube, der von einer Bluetooth-App mit einem Arduino Nano gesteuert wird. Der gesamte Build ist leicht an einen 4x4x4 oder 8x8x8 Cube anpassbar. Dieses Projekt ist von GreatScott inspiriert. Ich entschied mich für einen anspruchsvolleren Build mit größeren LEDs (8 mm), mit weniger Abstand + Hinzufügen von Bluetooth-Kommunikation, was das Hinzufügen neuer Funktionen so viel einfacher macht und auch die Möglichkeit bietet, eine App zur Steuerung des Cubes zu erstellen. Dadurch kann ich z. B. ein Snake Game codieren (3. Showcase-Video am Ende). Darüber hinaus habe ich einen Audio Visualizer-Modus hinzugefügt, der es dem Cube ermöglicht, einen AUX-Eingang zu visualisieren, z. Musik mit einem MSGEQ7 (Showcase-Video am Ende). Außerdem habe ich eine AnimationCreator-Anwendung in Java mit einer einfach zu bedienenden Benutzeroberfläche zum Erstellen und Optimieren von Animationen geschrieben, sodass jeder sehr schnell benutzerdefinierte Animationen erstellen kann. Die Sketch + Bluetooth App bietet also einen Rahmen für jede LED Cube Konfiguration und mit dem Animation Creator müssen Sie sich nicht um die Implementierung benutzerdefinierter Animationen kümmern.

Links zur Arduino Sketch- und Bluetooth-App:

RGBCube_Arduino Sketch (Github)+Animation Creator.jar

Cubo Bluetooth-App (Github)

Stückliste für den Cube:

  • 216x RGB LED (gemeinsame Anode) (8mm)(AliExpress / Ebay) -> 6x6x6=216
  • Flachbandkabel (1m 40Pin sollte ausreichen) (AliExpress / Ebay / Amazon)
  • Buchsen- und Steckerleisten (jeweils mindestens 4x40pin) (AliExpress / Ebay / Amazon)
  • Verzinnter Kupfer-/Silberdraht 0,8 mm (~25 Meter) (AliExpress / Ebay / Amazon)
  • Schrumpfschlauch (AliExpress / Ebay / Amazon)

Stückliste für die Steuerplatinen:

  • 7 x TLC5940 LED-Treiber (Ebay / AliExpress)
  • 6 x IRF 9540 P-Kanal MOSFETs (Amazon / Ebay / AliExpress)
  • 8 x 10 uF Kondensatoren (Amazon / Ebay / AliExpress)
  • 3 x 1000 uF Kondensatoren (Amazon / Ebay / AliExpress)
  • 14x 2,2kOhm Widerstände (Amazon / Ebay / AliExpress)
  • 1 x 1kOhm Widerstand (Amazon / Ebay / AliExpress)
  • 7 x 28-Pin-IC-Sockel (Amazon / Ebay / AliExpress)
  • 1 x Arduino Nano (Amazon / Ebay / AliExpress)
  • 1 x 1N4001 Diode (Alle gängigen Dioden) (Amazon / Ebay / AliExpress)
  • 8 x 0,1uF Kondensatoren (Ebay)
  • 1 x DC-Buchse PCB-Halterung (Amazon/Ebay/in AliExpress)
  • 1 x HC-05 Bluetooth-Modul (Amazon / Ebay / AliExpress)

Schritt 1: Theorie

Theorie
Theorie

Wenn Sie nicht an der Theorie zum Multiplexing interessiert sind, gehen Sie zu Schritt 2, um den eigentlichen Build zu starten

Da Hardware und Software gleich große Teile dieses Projekts sind, werfen wir zunächst einen Blick auf die Theorie.

Das Gehirn des Würfels ist ein Arduino Nano. Es bietet genügend I/O, um mit den verwendeten LED-Treibern zu interagieren sowie eine Bluetooth-Verbindung zu einem HC-05-Modul und anderer Steuerungshardware herzustellen. Wenn Sie sich andere LED-Cube-Builds angesehen haben, werden Sie wissen, dass die meisten Leute einfache Schieberegister verwenden, um Helligkeitswerte der Farben der einzelnen LEDs zu speichern. Dieser Build verwendet keine Schieberegister, sondern sogenannte "TLC5940" LED-Treiber. Wie wir später sehen werden, spart uns dies viel Zeit sowie jede Menge zusätzliche Hardware (z. B. Widerstände).

Die grundlegende Funktionalität der Steuerung des Cubes verwendet Multiplexing. In diesem Fall multiplexen wir die 6 Schichten des Würfels, was bedeutet, dass alle Anoden (+) aller LEDs in einer Schicht verbunden sind, während die einzelnen Kathoden aller LEDs in derselben Spalte nach unten verbunden sind. Das bedeutet, wenn Sie die LED an Position x=1, y=2, z=3, Farbe: grün aufleuchten möchten, müssen Sie 5V an der Anode von Schicht 3 bereitstellen und GND mit der Kathode der Säule verbinden entsprechend Grüner Pin von x=1, y=2. In Wirklichkeit ist also zu einem bestimmten Zeitpunkt nur eine Ebene des Würfels tatsächlich eingeschaltet, aber wie Sie später im Code sehen werden, schalten wir die einzelnen Ebenen so schnell aus und wieder ein, dass unser Auge denkt, dass der gesamte Würfel eingeschaltet ist.

Um Dinge wie Helligkeit, Animationen usw. zu steuern, verwenden wir ein HC-05 Bluetooth-Modul, das mit dem Arduino Nano verbunden ist. Es ist sehr einfach, das Modul mit einem Arduino zu verwenden, da Sie nur eine 4-Pin-Verbindung benötigen und das Modul einfach über die standardmäßige serielle Kommunikation des Arduino anschließen können. Gegen Ende dieser Anleitung werden Sie sehen, wie einfach es ist, Ihre eigene Bluetooth-App zu schreiben, um den Cube zu steuern.

HINWEIS

In meinem Schaltplan der Arduino-Platine sehen Sie auch einen kleinen Schaltplan für die Anbindung eines MSGEQ7-Chips, um den Audioeingang zu verarbeiten. Dies ist für den eigentlichen Cube absolut nicht erforderlich und ist nur eine zusätzliche Funktionalität, die ich hinzugefügt habe, daher können Sie den markierten Schaltplan einfach ignorieren mit "MSGEQ7"

Schritt 2: Hardware: LED Cube Build

Hardware: LED Cube Build
Hardware: LED Cube Build
Hardware: LED Cube Build
Hardware: LED Cube Build
Hardware: LED Cube Build
Hardware: LED Cube Build

Schauen wir uns also an, wie man den Cube selbst baut, bevor wir über die Steuerschaltung um den Arduino Nano sprechen.

Stückliste für die Würfelkonstruktion:

  • 216x RGB LED (gemeinsame Anode) (AliExpress / Ebay) -> 6x6x6=216
  • Flachbandkabel (1m 40Pin sollte ausreichen) (AliExpress / Ebay / Amazon)
  • Buchsen- und Steckerleisten (mindestens 4x40pin) (AliExpress / Ebay / Amazon)
  • Verzinnter Kupfer-/Silberdraht 0,8 mm (~25 Meter) (AliExpress / Ebay / Amazon)
  • Schrumpfschlauch (AliExpress / Ebay / Amazon)

Das erste was zu tun ist, und ich jetzt es ist mühsam aber notwendig, müssen wir die LEDs testen. Dazu schließen wir einfach ein Netzteil z. B. 9V Batterieblock mit Clip an ein Breaboard an. Wie Sie in Bild 3 sehen können, ist der längste Pin der LEDs die Anode (+), also verbinden Sie diesen Pin mit den +9V der Batterie. Bevor Sie nun GND mit den einzelnen Farben Kathoden (Rot, Grün, Blau) verbinden, fügen Sie jeder Kathode einen 220 Ohm Widerstand hinzu, um den Strom zu begrenzen. Nun viel Spaß beim Testen aller Farben aller 216 LEDs.

Im nächsten Schritt bereiten wir die getesteten LEDs so vor, dass wir sie später problemlos in Säulen montieren können.

Schritt 3: LED-Reihen

LED-Reihen
LED-Reihen
LED-Reihen
LED-Reihen
LED-Reihen
LED-Reihen

Bevor wir die LEDs in ihre jeweiligen Reihen löten können, müssen wir die Leitungen biegen und schneiden.

Wie Sie im ersten Bild sehen können, habe ich einfach ein 8mm Loch (für 8mm LEDs) in ein Stück Holz gebohrt und 3 sehr kleine Bohrer links vom LED-Loch und einen weiteren rechts vom Loch gebohrt. Diese Bohrer sind Markierungen zum richtigen Biegen der Leitungen und sollten einen Abstand von ca. 1cm von der Mitte des Lochs für die LED haben.

Diese Technik ist von Steve Manley inspiriert, ein Video von ihm finden Sie in einer leichten Variation auf YouTube.

Bevor Sie die Leitungen wie in Bild 2 und 3 gezeigt um die Bohrer schneiden und biegen, vergewissern Sie sich, dass die Ausrichtung der Leitungen der Abbildung 1 entspricht (Blau oben links, dann grün, dann Anode + rechts, und wieder rot links). Der Kreis, den Sie in die Leitungen gebogen haben, sollte einen ausreichend großen Durchmesser haben, um den verzinnten Kupferdraht (0,8 mm) zu passen. Dieser Schritt macht es großartig einfacher, die LEDs gut zu verlöten.

Nun, da alle LEDs vorbereitet sind, wollen wir sie in Reihen von 6 zusammenbauen, wo die Anoden (+) verbunden sind:

  1. Bauen Sie eine kleine Schablone wie in Bild 6 zu sehen, bohren Sie 6 Löcher (Durchmesser 0,8 mm) mit einem Abstand von 2,5 cm zum nächsten Loch. Dadurch können wir 6 LEDs gleichzeitig in die Vorrichtung einbauen
  2. Zum Anschluss der Anoden benötigen wir ein gerades Stück aus verzinntem Kupferdraht von ~ 16cm Länge (mit etwas zusätzlichem Rand). Um den Draht schön und gerade zu bekommen, können Sie ein Ende des Drahtes in zB eine elektrische Bohrmaschine montieren, ca. 2 m Drähte auf einmal auf einem Tisch befestigen, dann den Bohrer so halten, dass der Draht gedehnt und straff ist und den Bohrer einschalten für ein paar Sekunden mit richtet den Draht sehr schnell aus. Sie können dann den Draht genau dort abschneiden, wo Sie das Stück befestigt haben. Sie können auch zwei Zangen verwenden und kleinere Drahtstücke gleichzeitig festziehen, aber das ist viel mühsamer
  3. Sobald Sie 16cm lange Drähte haben, führen Sie sie durch die Anode (+) Löcher der LEDs in der Vorrichtung und löten die Anodenstifte an den Draht (Bild 7)

Für den gesamten Würfel benötigen wir 6x6 =36 dieser LED-Reihen

Schritt 4: Schichtaufbau

Lagenaufbau
Lagenaufbau
Lagenaufbau
Lagenaufbau
Lagenaufbau
Lagenaufbau

Wie ich bereits erwähnt habe, werden wir die Schichten des Würfels multiplexen, aber für den Zusammenbau ist es einfacher, 6 Wände aus 6x6 LEDs zu bauen und diese dann nebeneinander zu montieren und einfach einen einzelnen verzinnten Kupferdraht zu führen, der die Anoden des Reihen in einer Schicht zusammen.

Beachten Sie, dass dieser Schritt viel Zeit und Geduld erfordert, um es richtig zu machen. Insgesamt müssen Sie für den Bau etwa 1000 Lötstellen löten, also nehmen Sie sich Zeit!

So bauen Sie eine LED-Wand:

  1. Für die Schablone: Wir brauchen ein Stück Holz mit 6 geschnitzten Linien, um 6 Reihen übereinander zu passen, um eine Wand zu bauen. Sie können die Vorrichtung selbst in Bild 2 sehen (Abstände zwischen den Reihen: 2,5cm)
  2. Sie passen die 6 LED-Reihen in die Schnitzereien ein, mit dem Anodendraht nach unten in die geschnitzte Linie, so dass die 3 Kathoden (R, G, B) nach oben zeigen
  3. Um die übereinander liegenden Kathoden zu verbinden (siehe Bild 2) benötigen wir noch etwas mehr Draht (also wieder 6 Säulen x 3 Kathoden x 6 Wände = 108 verzinnte Drahtstücke wie im letzten Schritt (2.) beschrieben (auch gleiche Länge))
  4. Schieben Sie die Drahtstücke vom unteren Ende einer Säule durch die Löcher der Kathoden in die obere Reihe und löten Sie den Draht an jeder LED an

Sie tun dies 6-mal, um 6 Wände mit LEDs zu erhalten.

Jetzt können wir die Wände tatsächlich zum eigentlichen Würfel selbst zusammenbauen. Aber um den Würfel zu halten, müssen wir eine Art Grundfläche bauen. Dafür habe ich einfach dünnes Sperrholz verwendet und kleine 0,8 mm Löcher hineingebohrt, um die Drähte zu passen, die von den untersten LED-Reihen (für alle 6 LED-Wände) hängen. Die Maße für die Löcher einer einzelnen LED sind in Schritt 3 dokumentiert und die Abstände zwischen den einzelnen LEDs betragen 2,5 cm.

Mit den Löchern nehmen wir nun die erste Wand und manövrieren sie in die Löcher ganz links vom Sperrholz. Die LED-Reihe unten sollte direkt auf dem Holz sitzen, damit am Ende alle Walls gleich ausgerichtet sind.

Machen Sie dasselbe mit den restlichen LED-Wänden, aber denken Sie daran, dass die Anoden der Wände immer in dieselbe Richtung zeigen. (in Bild 3 zeigen alle Anoden der Wände nach links)

Sobald der gesamte Cube an Ort und Stelle ist, müssen wir die Anoden jeder Schicht zusammenlöten. Dazu nehmen wir ein weiteres ~16cm Stück geraden Draht und legen ihn auf die erste Schicht, so dass der Draht alle Anodendrähte der 6 Wände in einer Schicht berührt. Achten Sie darauf, dass der neue Draht keine der Kathoden berührt. Löten Sie den Draht an Ort und Stelle und wiederholen Sie das gleiche für die 5 verbleibenden Schichten.

Schritt 5: Cube-Verkabelung

LED-Treiberplatine
LED-Treiberplatine
LED-Treiberplatine
LED-Treiberplatine
LED-Treiberplatine
LED-Treiberplatine

Teile für die LED-Treiberplatine:

  • 7 x TLC5940
  • 6/7 x 10 uF Kondensatoren
  • 2 x 1000 uF Kondensatoren
  • 7x 2,2kOhm Widerstände
  • 7 x 28-Pin-IC-Sockel
  • 7 x 0.1uF Kondensatoren
  • Flachbandkabel

Kommen wir zu den Steuerkreisen, werfen wir zunächst einen Blick auf die LED-Treiberplatine. Wie bereits erwähnt, benötigen wir 7 TLC5940, die mit dem Arduino Nano verbunden sind. Alle TLC5940-Chips sind verkettet, was bedeutet, dass alle Steuerpins der Treiber miteinander verbunden sind (zB BLANK-Pin des ersten TLC ist mit BLANK des zweiten, dritten, vierten, … TLC verbunden) und alle mit dem Arduino verbunden die gleichen Drähte, außer dem Serial In, der zuerst von einem Arduino Digital Pin mit dem ersten TLC verbunden wird, dann wird der Serial Out-Pin dieses ersten TLC mit dem SIN-Pin des zweiten TLC verbunden und so weiter (siehe Bild 4)…

Der Schaltplan des TLC-Boards ist also recht einfach, wie Sie im beigefügten Schaltplan sehen können.

(WENN SIE DIE BOARD ÄTZEN MÖCHTEN, SPRINGEN SIE ZU SCHRITT 8)

Ich habe auch einen Screenshot des Schaltplans in Frizz angehängt, der Pin-Beschriftungen und auch eine GIMP-.xcf-Datei mit Ebenen für jede getrennte Control-Pin-Verbindung enthält.

Beginnen Sie mit dem Löten aller IC-Sockel, fügen Sie dann die 100nF-Kondensatoren zu jedem TLC hinzu, gefolgt von den 2,2 kOhm-Widerständen für IREF und GND und dem 7-poligen Header in der oberen rechten Ecke. Danach können Sie einfach der.xcf-Datei folgen, indem Sie beginnend mit der "SIN-Schicht" in der Gimp-Datei, die zeigt, wie die seriellen IN / OUT-Pins der Treiber mit Flachbandkabeln verbunden werden, dann die CLK-Schicht in GIMP aktiviert wird und so weiter. Stellen Sie sicher, dass Sie eine gute Verbindung der + und - Pins mit der Stiftleiste oben rechts haben. Der Rest des Schaltplans sollte selbsterklärend sein, aber stellen Sie sicher, dass Sie genügend 1000uF- und 10uF-Kondensatoren zur Platine hinzufügen, es ist nicht so relevant, wo genau Sie positionieren sie.

Sobald dieses Board fertig ist, können Sie im nächsten Schritt zum Arduino Board übergehen.

Schritt 7: Arduino + Bluetooth-Steuerplatine

Arduino + Bluetooth-Steuerplatine
Arduino + Bluetooth-Steuerplatine

Teile für die Steuerplatine:

  • 6 x IRF 9540 P-Kanal-MOSFETs
  • 1 x 10 uF Kondensatoren
  • 1 x 1000 uF Kondensatoren
  • 7 x 2,2 kOhm Widerstände
  • 1 x 1kOhm Widerstand
  • 2 x 14 Buchsenstiftleiste
  • 1 x Arduino Nano
  • 1 x 1N4001 Diode
  • 1 x 0.1uF Kondensatoren
  • 1 x DC-Buchse Leiterplattenmontage
  • 1 x HC-05 Bluetooth-Modul
  • 1 x 3,5-mm-Audiobuchse

Das Arduino Control Board übernimmt hauptsächlich das Multiplexing sowie das Gegenstück zur Stiftleiste des LED-Treiberboards.

Löten auf Perfboard:

  1. Platzieren Sie zwei weibliche Stiftleisten als Buchse für den Arduino in der Mitte der Platine.
  2. Legen Sie die 6 MOSFETs in einer Reihe nebeneinander auf die rechte Seite des Arduino (die Seite mit den Analog Pins) und fügen Sie jeweils einen 2,2 kOhm Widerstand zwischen dem ersten und dem letzten Pin hinzu.
  3. Platzieren Sie nun den 6-Pin-Header vor den MOSFETs (Mitte der Reihe) und verbinden Sie die 6 DRAIN-Pins der FETs (mittlerer Pin) mit dem Header und die GATE-Pins (linker Pin) der FETs mit den jeweiligen Arduino Analog Pins.
  4. Als nächstes löten Sie den 7-Pin-Header für den LEDDriver-Anschluss auf der anderen Seite des Arduino, lassen etwas Platz für Kabel und löten alle Verbindungen vom Arduino an den Pin-Header.
  5. Fügen Sie einige Kondensatoren (1-2 1000uF, 1 10uF, 100nF neben dem Arduino) für mögliche Stromentnahmen hinzu.
  6. Löten Sie einen 4-poligen Header neben der Rückseite des Arduino für das HC-05-Modul und stellen Sie die 4 Verbindungen zu VCC, RX, TX, GND her und vergessen Sie nicht, einen Spannungsteiler vom RX-Pin des HC-05 zu machen und der TX Pin des Arduino (siehe hier)
  7. Platzieren Sie die DC-Buchse an einer beliebigen Kante der Platine mit einem Schalter daneben und verbinden Sie den rechten Pin des Schalters mit dem + Pin der DC-Buchse
  8. Stellen Sie schließlich alle erforderlichen Stromverbindungen vom GND-Pin der DC-Buchse und dem rechten Pin des Schalters (VCC) zu Arduino, MOSFETs, Kondensatoren und HC-05 her, wie im Schaltplan zu sehen. Denken Sie daran, die Diode hinzuzufügen, die nur die Leistung vom VCC-Pin des Schalters in den 5V-Pin des Arduinos fließen lässt, nicht umgekehrt. (Dies schützt den Arduino bei der Programmierung über eine USB-Verbindung).

Für den Stromanschluss habe ich eine DC Power Jack mit einem einfachen Schalter verwendet, Sie können auch einen USB-Anschluss verwenden, wenn Sie möchten auf das Arduino-Board. Wie im ersten Schritt erwähnt, gibt es auch eine MSGEQ7-Verbindungsschaltung im Schaltplan, aber ignorieren Sie dies einfach, wenn Sie keinen MSGEQ7 verwenden. (Für weitere Informationen über die MSGEQ7-Funktionalität klicken Sie hier)

Vergessen Sie nicht, ein weiteres 7-Pin-Flachbandkabel mit Stiftleisten an jedem Ende herzustellen, um die Arduino-Platine mit der Treiberplatine zu verbinden

Schritt 8: Optional: Ätzen der Leiterplatten

Optional: Ätzen der Leiterplatten
Optional: Ätzen der Leiterplatten
Optional: Ätzen der Leiterplatten
Optional: Ätzen der Leiterplatten
Optional: Ätzen der Leiterplatten
Optional: Ätzen der Leiterplatten

Wenn Sie also nicht gerne viele Kabel löten möchten, können Sie natürlich auch die notwendigen Platinen ätzen, wenn Sie das bevorzugen.

In meinem Cube sind die Arduino-Platine und die Power / Audio-Anschlussplatine beide geätzte Platinen mit den beigefügten Schaltplan / EAGLE-Dateien. Das erste Mal habe ich einen Fehler im Schaltplan gemacht, also musste ich die LED-Treiberplatine wie im letzten Schritt wiederholen. Es gibt keine großen Vorteile, die Platine anstelle der Verwendung von Perboard zu ätzen, also zögern Sie nicht, die Platine entweder zu ätzen oder auf Perfboard zu löten.

In der angehängten.zip-Datei finden Sie sowohl eine BOARD-Datei als auch eine SCHEMATIC-Datei.

Beachten Sie, dass die Spuren der obersten Schicht (rot) Drahtbrücken sein sollen (da ich zu Hause keine zweiseitigen Platinen ätzen kann). Die ungerouteten Leiterbahnen zeigen die Verbindungen, die über Kabel für die weiblichen Stiftleisten hergestellt werden sollen.

Der Schaltplan enthält die MSGEQ7-Funktion, die Sie einfach weglassen können, indem Sie den Abschnitt des Schaltplans löschen, der im Screenshot des.pdf-Schaltplans mit "(MSGEQ7)" gekennzeichnet ist.

Schritt 9: Anschließen des Cubes

Anschließen des Cubes
Anschließen des Cubes
Anschließen des Cubes
Anschließen des Cubes
Anschließen des Cubes
Anschließen des Cubes

Um alle Teile des Cubes zu verbinden, stecken Sie zunächst das 7-Pin-Kabel an das Arduino Board und das Driver Board (achten Sie auf die richtige Ausrichtung!). Als nächstes stecken Sie das HC05-Modul in den 4-Pin-Header und verbinden das Power Board, wenn es getrennt ist.

Um die 7x16 Pin Header des Cubes anzuschließen, beginnen Sie mit dem ersten TLC (dem, dessen SIN-Pin direkt mit dem Arduino verbunden ist). Suchen Sie das richtige 16-Pin-Kabel aus dem Cube und verbinden Sie es mit der Stiftleiste des ersten TLC (stellen Sie sicher, dass das Kabel für die Kathode Nr.0 mit dem ersten TLC OUT0-Pin verbunden ist!). Fahren Sie fort und schließen Sie die anderen 16-Pin-Kabel in der richtigen Reihenfolge an die entsprechenden TLC-Header an.

Zu guter Letzt verbinden Sie das 6-Pin-Kabel für die Anoden vom Cube mit dem 6-Pin-Header auf der Steuerplatine neben den MOSFETs.

Um den Cube fertig zu stellen, habe ich dem Gehäuse Wände mit etwas mehr Sperrholz mit schwarzer Farbe hinzugefügt und sie eingeklebt.

Jetzt sind wir mit der gesamten Hardware fertig, die für den gesamten Build erforderlich ist!

Schritt 10: Software: Multiplexing-Zyklus

Software: Multiplexing-Zyklus
Software: Multiplexing-Zyklus

Theoretisch führt das Arduino nun ständig den folgenden Zyklus aus:

  1. Wenn die LayerDuration abgelaufen ist, laden Sie die Werte für den nächsten Layer in die TLCs, schalten Sie den aktuellen Layer aus, schalten Sie den nächsten Layer ein, setzen Sie die LayerDuration zurück, übergeben Sie die neuen Werte an die TLCs
  2. Wenn die FrameDuration abgelaufen ist, laden Sie den neuen Frame der aktuellen Animation, indem Sie die Werte für alle LEDs und Farben in den ValueLed-Puffer speichern, FrameDuration zurücksetzen
  3. Wenn Bluetooth-Daten verfügbar sind, reagieren Sie darauf (Ändern Sie Animationen, Helligkeit, …) (mehr dazu später)

Wie Sie sehen können, liegt der Schwerpunkt des Codes auf Geschwindigkeit. Es ist wichtig, dass die Zeit zum Wechseln des Layers minimal ist.

Je schneller Sie die Layer ein- und ausschalten, desto mehr "Frames" erhalten Sie. Für einen 6x6x6 RGB LED Cube wie diesen habe ich herausgefunden, dass eine Layer Duration von 1700 microSec. ist gut genug, um das Flackern auf einem Minimum zu halten, und sollte auf diesem Wert belassen werden. Die FrameDuration steuert mehr von der Geschwindigkeit der Animation, sodass sie für verschiedene Animationen geändert werden kann.

Im nächsten Schritt werden wir uns anschauen, wie wir tatsächlich eigene Animationen schreiben können.

Schritt 11: Benutzerdefinierte Animationen

Benutzerdefinierte Animationen
Benutzerdefinierte Animationen
Benutzerdefinierte Animationen
Benutzerdefinierte Animationen

Um eine Animation zu implementieren, müssen wir den ValueLed-Puffer jedes Mal auf die Werte setzen, die wir für den nächsten Frame wünschen, wenn FrameDuration vergangen ist. Dazu rufen wir die Makrofunktion "SETLED(x, y, z, COLOR, Brightness)" auf.

x, y, z sind die Koordinaten der einzustellenden LED und FARBE (ROT, GRÜN oder BLAU) ist die Farbe, die wir einstellen möchten und Helligkeit ist der tatsächliche Wert für diese spezielle Farbe, die wir einstellen.

Um zum Beispiel eine Animation zu implementieren, die einfach die Farben Rot, Grün und Blau zufällig über den gesamten Würfel anzeigt, können Sie einfach Folgendes tun:

void randomLedsFull(){

for (uint8_t j = 0; j < CUBE_SIZE; j++) { for (uint8_t x = 0; x < CUBE_SIZE; x++) { for (uint8_t y = 0; y < CUBE_SIZE; y++) { uint8_t rand = random8(3); SETLED(x, y, j, rand, maxHell); } } } }

Diese Methode wird jedes Mal aufgerufen, wenn die FrameDuration abgelaufen ist und wird aus dem switch-case-Befehl in loop() ausgewählt. Wenn Sie neue Animationen schreiben, können Sie diese hinzufügen, indem Sie sie einfach in das Schaltergehäuse einfügen.

Schritt 12: Zusätzlich: AnimationCreator

Zusätzlich: AnimationCreator
Zusätzlich: AnimationCreator

Außerdem habe ich einen AnimationCreator mit JavaFX und Java3D geschrieben.

Es macht das Erstellen und Bearbeiten von benutzerdefinierten Animationen sehr einfach, indem es eine leicht verständliche Benutzeroberfläche bietet.

Sie können Animationen für 4x4x4, 6x6x6 oder 8x8x8 LED Cubes erstellen, bearbeiten, umbenennen und neu konfigurieren

Um eine neue Animation zu erstellen, klicken Sie einfach auf Datei>Neu, unter "Würfel" können Sie die Würfelgröße auswählen, um die Farbe einer LED einzustellen, wählen Sie die gewünschte Farbe mit dem Farbwähler auf der linken Seite und klicken Sie dann mit der linken Maustaste auf die gewünschten LEDs diese Farbe für diesen Rahmen. Um einen weiteren Frame hinzuzufügen, klicken Sie auf "Weiter" oder "+". Der Rest der UI-Steuerelemente ist ziemlich selbsterklärend, die Checkboxen neben den Cubes Layers dienen dazu, zu überprüfen, welche Layer vom Verschieben und "Keep Frame" betroffen sein sollen. Probieren Sie es einfach aus und Sie werden alles in kürzester Zeit herausfinden.

Um die Animation zu simulieren, können Sie zusätzlich auf die Schaltfläche "View 3D" klicken, die ein weiteres Fenster mit einem Java3D-Modell des Cubes öffnet. Sie können die Kamera drehen, während Sie die linke Maustaste gedrückt halten (Drücken Sie R, um die Kamera zurückzusetzen). Um die Animation abzuspielen/anzuhalten, drücken Sie die P-Taste, um die Animation zurückzusetzen, drücken Sie Q. Das Textfeld unter der Schaltfläche "View 3D" zeigt den aktuellen FrameTime, also die Geschwindigkeit Ihrer Animation.

Wenn Sie mit der Animation fertig sind, geben Sie ihr einen Namen und klicken Sie auf Datei> Speichern unter … und speichern Sie die Animation im selben Ordner wie die Cubo_Control.ino-Skizze.

Um Ihre neue Animation in die Skizze aufzunehmen, öffnen Sie die Cubo_Control.ino und fügen Sie folgenden Code über der Skizze hinzu:

#include "RGBit.h" //Ersetzen

Scrollen Sie nach unten zu BTEvent() und fügen Sie die case-Anweisung zum Switch-Case der Animationen hinzu

Schalter (curAnim){

… Fall 10: Animation= &ani_cubesmove[0][0]; FRAME_TIME= ANI_CUBESMOVE_FRAMTIME; maxCount= ANI_CUBESMOVE_FRAMES; brechen; Fall 11: //DEINE NEUE ANIMATION animation= &ani_rgbit[0][0]; FRAME_TIME= RGBIT_FRAMETIME; maxCount= ANI_RGBIT_FRAMES; brechen; }

Schritt 13: Bluetooth-App

Bluetooth-App
Bluetooth-App

Um den Cube tatsächlich zu steuern, ist es dank des HC-05-Moduls ganz einfach, eine Bluetooth-App zu erstellen, um Ihr Telefon mit dem Cube zu verbinden.

Link zur App:Github

Die App ist Open Source, also können Sie selbst weitere Animationen/Features hinzufügen.

  • Starten Sie die App, sie fordert Sie auf, Bluetooth einzuschalten
  • Klicken Sie auf „Suchen“und eine Liste der verfügbaren Bluetooth-Verbindungen wird angezeigt. Identifizieren Sie das HC-05-Modul aus dem Cube und klicken Sie darauf.
  • Wenn beim Versuch, eine Verbindung zum Cube herzustellen, ein Fehler auftritt, versuchen Sie, das HC-05-Modul in den Bluetooth-Einstellungen manuell zu koppeln
  • Sobald die App verbunden ist, wechselt die App zum Steuerungsbildschirm und die Bluetooth-Verbindung wurde hergestellt

Kontrollen

  • Geschwindigkeit & Helligkeit: Ändern Sie die Schiebereglerwerte, um die Animation zu beschleunigen/verlangsamen oder die Helligkeit zu ändern
  • Animationen: Klicken Sie auf eine Schaltfläche, um die Animation zu ändern, standardmäßig laufen die Animationen in einer Schleife (von links oben beginnend entspricht die Schaltfläche currAnim)
  • Text scrollen: Klicken Sie auf die Schaltfläche "Text", um einen Dialog aufzurufen, in dem Sie Text eingeben können, der durch den Würfel gescrollt wird
  • Befehl: Sie können Befehle manuell mit dem Command TextField eingeben (schauen Sie in der BTEvent()-Methode von Cubo_Control.ino für die Syntax nach)
  • Snake: klassisches Snake Game (Rot:Apple, Grün:Snake Head, Blue:Sneak Tail) (Bedienung: 4 Richtungstasten, Auf und Ab wird ausgelöst durch Drehen des Telefons nach vorne (Auf) oder zurück (Ab))
  • Audio Visualizer: MSGEQ7 wird verwendet, um 6 Audiobänder von der AUX-Buchse zu visualisieren (Taste für Animation 7)

Schritt 14: Vitrine