Weihnachten steht vor der Tür und es ist an der Zeit, unser Haus mit Weihnachtsmotiven zu schmücken. Fenster und auch der Weihnachtsbaum werden mit Lichtern und Schmuck versehen. Der Weihnachtsmann hinterlässt seiner Geschenke unterm Weihnachtsbaum.
In diesem Projekt werden wir ganz besondere, farbenfrohe und auffällige Geschenkboxen herstellen. Schachteln, die die Aufmerksamkeit auf sich ziehen und die Farbe wechseln.
Benötigte Hardware und Materialien
- 1 AZ-MEGA2560-Board mit ATmega2560
- 2 RGB LED Panel WS2812B 16x16 256 LEDs Flexibel Led Matrix
- 1 U 64 LED Matrix Panel CJMCU-8x8 Modul
- 1 Mini Breadboard 400 Pin mit 4 Stromschienen
- Quadratische Holzstäbchen 300mm 3mm x 3mm
- Holzleim wasserfest
- 10 Weißes A4-Papier
- 5 weißes A3-Papier
- Balsaholz oder Pappelsperrholz für den Boden der Schachteln
Benötigte Software, Bibliotheken und Sketch
- Arduino IDE
- Adafruit_NeoPixel.h Library (über Bibliotheksverwalter)
- Adafruit_NeoMatrix.h Library (über Bibliotheksverwalter)
- FastLED.h Library (über Bibliotheksverwalter)
- Sketch Christmas_gift_boxes.ino
Schaltplan und Beschreibung des Aufbaus
Die drei LED-Panels werden mit den digitalen Pins 6, 7 und 8 des AZ-Mega2560 Mikrocontrollers verbunden. Die für die Versorgung der LED-Panels benötigte 5-VDC-Spannung muss von einem Netzteil mit ausreichender Leistung geliefert werden. Auch der Mikrocontroller wird von der externen 5-VDC-Quelle versorgt. Entweder wie hier am USB-Port, die externe Buchse, oder den Vin Pin. Die Schaltung für dieses Projekt ist sehr einfach, da nur drei LED-Panels und der Mikrocontroller benötigt werden.
Montage
Für den Bau der Schachteln werden die Rahmen der Würfel aus den quadratischen Stäben gebaut. Für die kleine Schachtel werden 12 Stäbe von 10 cm Länge, für die mittlere Schachtel 12 Stäbe von 17 cm Länge und für die große Schachtel 12 Stäbe von 22 cm Länge abgeschnitten. Die Ecken der Hölzchen werden zusammengeklebt.
Für die Wände der Schachteln verwenden wir weißes DIN-A4-Papier für die mittlere und die kleine Schachtel und ebenfalls weißes DIN-A3-Papier für die große Schachtel. Das Papier ist leicht lichtdurchlässig und sorgt dafür, das Licht der LEDs zu streuen und homogen zu machen. Für den Boden der Boxen wird Balsa- oder Pappelsperrholz in der gleichen Größe wie die Seiten der Boxen verwendet. Darauf werden die LED-Module installiert.
Beschreibung des Sketches
Die Schachteln ändern die von uns festgelegten Farben und im von uns festgelegten Intervall. Der Quellcode ist im Sketch genau beschrieben.
Es werden die drei Bibliotheken FastLED, Adafruit_NeoMatrix und Adafruit_Neopixel benötigt, um die LEDs zu steuern.
#include "FastLED.h" #include <Adafruit_NeoMatrix.h> #include <Adafruit_NeoPixel.h>
Als Nächstes werden die Anzahl der LEDs und die verwendeten Pins als Konstanten definiert.
#define num_leds_big_box 256 #define pin_big_box 7 #define pin_medium_sized_box 8 #define num_leds_small_box 64 #define pin_small_box 6
- Für jedes Panel wird ein NeoMatrix-Objekt erstellt, dem folgende Parameter übergeben werden:
- Anzahl der LEDs in der Breite und Höhe des Panels (LEDs in der Breite und LEDs in der Höhe) und der PIN des Mikrocontrollers, an den die Datenleitung des LED-Panels zum Mikrocontroller angeschlossen ist.
- Position der LED Nummer 0 auf dem Panel, LED 0 befindet sich unten rechts auf dem Panel.
- Anordnung der LEDs auf dem Bedienfeld und Fortschreiten der Nummerierung. Die LEDs sind in Spalten angeordnet. Bei NEO_MATRIX_ZIGZAG ist angegeben, dass die LED-Nummerierung wie eine Schlange im Zickzack fortschreitet, wenn eine Spalte endet, beginnt die nächste gerade mit der nächsten LED links von der nächsten Spalte. Bei NEO_MATRIX_PROGRESSIVE ist die Anordnung so gestaltet, dass wenn eine Spalte endet, die nächste genauso wie die vorherige beginnt.
- Die Anordnung und Verdrahtung der drei internen LEDs. Die interne Anordnung ist eine grüne, rote und blaue LED (NEO_GRB). Der letzte Parameter ist die Arbeitsfrequenz (800 KHz).
Adafruit_NeoMatrix big_box_matrix = Adafruit_NeoMatrix(16, 16, pin_big_box, NEO_MATRIX_BOTTOM + NEO_MATRIX_RIGHT + NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG, NEO_GRB + NEO_KHZ800); Adafruit_NeoMatrix medium_sized_box_matrix = Adafruit_NeoMatrix(16, 16, pin_medium_sized_box, NEO_MATRIX_BOTTOM + NEO_MATRIX_RIGHT + NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG, NEO_GRB + NEO_KHZ800); Adafruit_NeoMatrix small_box_matrix = Adafruit_NeoMatrix(8, 8, pin_small_box, NEO_MATRIX_TOP + NEO_MATRIX_RIGHT + NEO_MATRIX_COLUMNS + NEO_MATRIX_PROGRESSIVE, NEO_GRB + NEO_KHZ800);
Nach der Implementierung der Bibliotheken und der Definition der Variablen müssen die LED-Panels initialisiert werden. Dies geschieht in der setup()-Methode, in der auch der anfänglichen Zustand der LEDs konfiguriert wird.
big_box_matrix.begin(); medium_sized_box_matrix.begin(); small_box_matrix.begin(); big_box_matrix.clear(); medium_sized_box_matrix.clear(); small_box_matrix.clear();
In der fortlaufenden loop()-Methode werden die Methoden aufgerufen, die für die Beleuchtung zuständig sind. Sie funktionieren alle gleich, bis auf eine 50ms-Pause, daher beschreibe ich nur eine der Methoden.
Zuerst wird die Beleuchtung für den großen Kasten aufgerufen.
big_box_matrix_red();
Bei der Ausführung dieser Methode wird zunächst die Helligkeit der LEDs auf die Hälfte des Maximalwerts (125 von 254) eingestellt. Dann wird eine Schleife ausgeführt, die von der ersten LED an der Position 0 bis zur letzten an der Position 255 (insgesamt 256 LEDs) läuft, diese auf Rot setzt und einschaltet. Nach dem Einschalten aller LEDs wird eine Pause von 3 Sekunden eingefügt, bevor zur Methode loop() zurückgekehrt und die nächste Zeile ausgeführt wird. in diesem Fall der Aufruf der Methode medium_sized_box_matrix_yellow(), also die mittlere Box. Die Ausführung dieser Methode ist ähnlich wie die oben beschriebene, nur die Farbe und die Box, an der die Änderung vorgenommen werden soll, ändern sich. Eine Liste der "predefined colors" finden Sie hier in der Beschreibung der FastLED-Bibliothek.
void big_box_matrix_red() { big_box_matrix.setBrightness(125); for (int i=0; i<num_leds_big_box; i++) { big_box_matrix.setPixelColor(i, CRGB::Red); big_box_matrix.show(); } delay(3000); }
Die einzige Änderung in der Methode zum Ändern der Farbe des kleinen Kastens ist eine Verzögerung von 50ms innerhalb der for-Schleife.
void small_box_matrix_red() { small_box_matrix.setBrightness(125); for (int i=0; i<num_leds_small_box; i++) { small_box_matrix.setPixelColor(i, CRGB::Red); small_box_matrix.show(); delay(50); } delay(3000); }
Die verschiedenen Methoden lassen die Geschenkkästchen jeweils in unterschiedlichen Farben leuchten.
Wir hoffen, dass Ihnen dieses Weihnachtsdekorationsprojekt gefallen hat und wünschen Ihnen ein frohes Weihnachtsfest.
wenn Sie das Video nicht sehen, müssen Sie Cookies in Ihrem Browser zulassen