12x8 LED-Matrix¶
Das Arduino UNO R4 WiFi ist mit einer integrierten 12x8 LED-Matrix ausgestattet, die so programmiert werden kann, dass sie eine Vielzahl von Grafiken, Animationen darstellt, als Schnittstelle dient oder sogar Spielerlebnisse ermöglicht.
In diesem Leitfaden bieten wir ein einfaches Beispiel, um Ihnen zu helfen, Ihr gewünschtes Muster auf der LED-Matrix anzuzeigen.
Speicherung von LED-Matrix-Daten in Arduino¶
Um die LED-Matrix zu nutzen, benötigen Sie die Bibliothek Arduino_LED_Matrix
, die zusammen mit dem Renesas-Kern installiert wird.
Die LED-Matrix-Bibliothek für das UNO R4 WiFi funktioniert, indem sie Frames in einen Puffer erstellt und lädt, um sie anzuzeigen. Ein Frame, auch bekannt als „Bild“, stellt dar, was aktuell auf der Matrix angezeigt wird. In einer Animation, die aus mehreren Bildern besteht, wird jedes Bild als Frame betrachtet.
Um die 12x8 LED-Matrix auf dem UNO R4 WiFi zu steuern, werden mindestens 96 Bit Speicherplatz benötigt. Die Bibliothek bietet dafür zwei Ansätze.
Ein Ansatz verwendet ein zweidimensionales Array, mit Nullen und Einsen, um darzustellen, ob die entsprechende LED aus oder an ist. Jede Zahl entspricht einer LED auf der LED-Matrix. Das folgende Array veranschaulicht ein herzförmiges Muster.
// Use a two-dimensional array to represent a 12x8 LED matrix.
byte frame[8][12] = {
{ 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 },
{ 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0 },
{ 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 },
{ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 },
{ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
Ein anderer Ansatz verwendet ein Array aus 32-Bit-Ganzzahlen, um den Status der LED-Matrix zu verwalten. Diese Methode ist kompakter, aber etwas komplexer. Jedes unsigned long
speichert 32 Bit. Daher benötigen Sie für eine 12x8 LED-Matrix, die 96 LEDs enthält, mindestens drei unsigned long
Variablen.
Jedes
unsigned long
enthält 32 Bits, und Sie können diese Bits als den Zustand eines bestimmten Teils in einer LED-Matrix betrachten.Diese
unsigned long
Variablen bilden ein Array, das den gesamten Zustand der LED-Matrix umfasst.
Hier ist ein Code-Snippet, das drei unsigned long
Variablen verwendet, um eine 12x8 LED-Matrix darzustellen.
// Use an array of 32-bit integers to store the LED matrix.
unsigned long frame[] = {
0x3184a444, // State of the first 32 LEDs
0x42081100, // State of the next 32 LEDs
0xa0040000 // State of the last 32 LEDs
};
Um die LED-Zustände besser zu visualisieren, können diese Werte in eine Binärform umgewandelt werden, wobei jedes Bit sequenziell den Zustand jeder LED von links nach rechts und von oben nach unten darstellt. Eine 0 zeigt an, dass sie aus ist, und eine 1, dass sie an ist.
0x3184a444 -> 110001100001001010010001000100
0x42081100 -> 1000010000010000001000100000000
0xa0040000 -> 10100000000001000000000000000000
Anzeigemuster auf der LED-Matrix¶
Sobald Ihr Muster fertig ist, besteht der nächste Schritt darin, diese Daten auf die 12x8 LED-Matrix zu übertragen. Dies beinhaltet normalerweise das Aufrufen von Bibliotheksfunktionen und das Übergeben des Arrays oder der Variablen, die die LED-Zustände enthalten, an diese Funktionen.
Verwendung eines zweidimensionalen Arrays
Um das Muster, das in einem 2D-Array gespeichert ist, anzuzeigen, können Sie den folgenden Code verwenden:
#include <Arduino_LED_Matrix.h> ArduinoLEDMatrix matrix; // Pre-defined 2D array byte frame[8][12] = { { 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 }, { 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0 }, { 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 }, { 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; void setup() { // Initialize LED matrix matrix.begin(); } void loop() { // Display pattern on the LED matrix matrix.renderBitmap(frame, 8, 12); delay(1000); }
In diesem Code verwenden wir die Funktion
matrix.renderBitmap(frame, 8, 12);
, um die LED-Matrix anzuzeigen. Hierbei stehen 8 und 12 jeweils für die Zeilen und Spalten der LED-Matrix.Verwendung eines Arrays aus 32-Bit-Ganzzahlen
Um das in einem Array von
unsigned long
gespeicherte Muster anzuzeigen, verwenden Sie den folgenden Code:#include "Arduino_LED_Matrix.h" ArduinoLEDMatrix matrix; void setup() { matrix.begin(); } const uint32_t heart[] = { 0x3184a444, 0x44042081, 0x100a0040 }; void loop(){ matrix.loadFrame(heart); delay(500); }
In diesem Fall müssen wir die Funktion
matrix.loadFrame(heart)
verwenden, um das Muster auf der LED-Matrix anzuzeigen.
Arduino LED-Matrix-Editor¶
Ich empfehle, ein Array aus unsigned long
zu verwenden, um den Zustand der LED-Matrix zu speichern, da es Speicherplatz auf dem Arduino spart. Obwohl diese Methode vielleicht nicht sehr intuitiv ist, können Sie den Arduino LED Matrix Editor als Hilfsmittel verwenden, der Ihnen hilft, ein Array aus unsigned long
zu generieren.
Mit dem Arduino LED Matrix Editor und der Bibliothek Arduino_LED_Matrix
können Sie bequem Symbole oder Animationen erstellen und auf dem UNO R4 WiFi-Board anzeigen. Alles, was Sie tun müssen, ist zu zeichnen, die .h
-Datei herunterzuladen und die Funktion matrix.play()
in Ihrem Sketch aufzurufen, um Ihr nächstes Projekt einfach zu realisieren.
Öffnen Sie den LED-Matrix-Editor
Zeichnen Sie Ihr Muster auf die zentrale Leinwand
Stellen Sie das Frame-Intervall in Millisekunden ein
Sie können einen neuen leeren Frame erstellen oder einen neuen Frame aus dem aktuellen Frame kopieren und erstellen.
Exportieren Sie die
.h
-HeaderdateiNachdem Sie auf OK geklickt haben, erhalten Sie eine Datei mit dem Namen
animation.h
.
Animationen Anzeigen¶
In den vorherigen Schritten haben wir eine .h
-Datei erhalten, die eine Reihe von Frames zusammen mit ihren Dauern speichert. Als Nächstes lassen Sie uns diese auf der LED-Matrix anzeigen.
Erstellen Sie zuerst einen Sketch. Sie können entweder die Datei
04-led_matrix.ino
öffnen, die sich unter dem Pfadelite-explorer-kit-main\r4_new_feature\04-led_matrix
befindet, oder diesen Code in die Arduino IDE kopieren.Wenn Sie den Code vom Pfad
elite-explorer-kit-main\r4_new_feature\04-led_matrix
verwenden, finden Sie in der Arduino IDE einen Tab namensanimation.h
. Öffnen Sie diesen und ersetzen Sie den vorhandenen Code durch die .h-Datei, die Sie von der Webseite erhalten haben.Wenn Sie Ihren eigenen Sketch erstellt haben, müssen Sie die von der Webseite erhaltene
.h
-Datei in dasselbe Verzeichnis Ihres Sketches kopieren.Nachdem Sie Ihren bevorzugten Code in der Arduino IDE eingerichtet und auf Ihr Arduino UNO R4 WiFi hochgeladen haben, sollte Ihre LED-Matrix nun das von Ihnen definierte Muster anzeigen.
Herzlichen Glückwunsch! Sie haben erfolgreich die 12x8 LED-Matrix Ihres Arduino UNO R4 WiFi programmiert!
Referenz
Weitere Projekte
SPIEL - Snake (Spaßprojekt)