#Grove8x8LEDMatrix
Explore tagged Tumblr posts
Text
Grove 8x8 LED Matrix am Arduino: Einsteigerfreundliche Programmieranleitung
In diesem Beitrag möchte ich dir zeigen, wie du die Grove 8x8 LED Matrix am Arduino UNO R3 programmierst. Der Vorteil von diesem Modul ist es, dass du keine umständliche Verkabelung vornehmen musst, da die Grove Schnittstelle einheitlich ist und ein vorkonfektioniertes Kabel verwendet wird.
Grove 8x8 LED Matrix am Arduino: Einsteigerfreundliche Programmieranleitung Im Beitrag Arduino Lektion 8: Max7219 8×8 LED Shield habe ich dir bereits ein ähnliches Modul mit dem Chip MAX7219 vorgestellt. Hier soll es nun um eine Matrix mit dem Treiber HT16K33 gehen.
Bezug einer 8x8 LED Matrix mit Grove Schnittstelle
Das mir vorliegende Modul habe ich auf ebay.de für rund 9 € zzgl. Versandkosten erstanden. Du bekommst dieses Modul aber etwas günstiger bei BerryBase für derzeit 8 € zzgl. Versandkosten. Lieferumfang Im Lieferumfang der LED Matrix ist neben der Matrix noch ein kleines Grove Kabel für den Anschluss, sowie ein Zettel mit den wichtigsten technischen Daten.
Auf der LED Matrix ist noch eine kleine Schutzfolie, welche du abziehen kannst, ich lasse diese jedoch drauf.
Aufbau der 8x8 LED Matrix
Auf der Rückseite findest du die Grove Schnittstelle, sowie zwei Lötpunkte für die optionale externe Stromversorgung. Des Weiteren kannst du die I2C Adresse 0x70 via 3 Lötbrücken ändern.
I2C Adressen via Lötbrücken Wenn du die Lötbrücken verbindest, dann kannst du diese Matrix über nachfolgende I2C Adressen ansteuern. Dabei kannst du auch mehrere Muster wählen und so zwischen 8 I2C Adressen auswählen. Verbundene PinsI2C Adresse-0x70A00x71A10x72A20x72A0 & A10x73A0 & A20x75A1 & A20x76A0, A1 & A20x77 Zur Ermittlung der I2C Adressen habe ich den I2C Scanner von https://playground.arduino.cc/Main/I2cScanner/ verwendet.
Zusätzliche Ressourcen für die Programmierung am Arduino
Damit du diese LED Matrix programmieren kannst, benötigst du entweder - ein Grove Adapterkabel, oder - ein Grove Base Shield für den Arduino UNO R3, oder - ein Seeeduino Nano
Grove Adapterkabel zu Breadboardpins
Grove Base Shield für den Arduino UNO R3
Seeeduino Nano Das Grove Base Shield hat mehrere Grove Buchsen digital & analog und somit bietet dieses eine sehr große Bandbreite an Möglichkeiten für Projekte. Wenn du lediglich die LED Matrix programmieren möchtest und du hast bereits einen Arduino Nano oder Arduino UNO dann
Programmieren der LED Matrix am Arduino via I2C
Damit die LED Matrix mit HT16K33 Treiber angesteuert werden kann, müssen wir in der Arduino IDE eine zusätzliche Bibliothek installieren. Diese können wir uns als ZIP-Datei vom GitHub Repository Seeed-Studio/Grove_LED_Matrix_Driver_HT16K33 herunterladen. Weitere Informationen zu diesem Modul findest du auf der englischen Wikiseite von Seeedstudio https://wiki.seeedstudio.com/Grove-LED_Matrix_Driver-HT16K33/. Anzeigen eines Smileys auf der LED Matrix Für die Erstellung eines Smileys kannst du den LED Matrix Editor unter https://xantorohara.github.io/led-matrix-editor/ verwenden. Dieser Onlineeditor gibt dir die Möglichkeit, mit der Maus auf der LED Matrix einzelne LEDs zu aktivieren / deaktivieren.
LED Matrix Editor von Xantorohara Auf der rechten Seite findest du ein Stück Code, welchen du in dein Arduino Programm integrieren kannst. In meinem Fall habe ich ein lachendes Smiley gezeichnet und erhalte den Wert "0x3c4299a581a5423c". Die Bibliothek liefert zusätzlich ein paar Beispiele, welche mit der default I2C Adresse 0x70 lauffähig sind. Von diesen Beispielen wähle ich zunächst "displaycustom_pictures" und modifiziere dieses etwas. //Bibliotheken zum kommunizieren mit der LED Matrix #include #include "Grove_LED_Matrix_Driver_HT16K33.h" //Wert für ein lachenden Smiley const uint64_t smiley = 0x3c4299a581a5423c; //instanz einer LED Matrix Matrix_8x8 matrix; void setup() { //beginn der I2C kommunikation Wire.begin(); //beginn der kommunikation mit der LED Matrix matrix.init(); //setzen der Helligkeit der Matrix //Werte sind zwischen 0 und 15 //wobei 0 dunkel ist und 15 das hellste matrix.setBrightness(5); //In welcher Frequenz die LED Matrix blinken soll, //Werte sind: //- BLINK_OFF > kein blinken, //- BLINK_1HZ > langsames blinken, //- BLINK_2HZ > schnelles blinken, matrix.setBlinkRate(BLINK_OFF); } void loop() { //anzeigen eines Bildes matrix.writeOnePicture(smiley); //absenden der Daten matrix.display(); //eine Pause von 10 Sekunden delay(10000); } Auf der Matrix hat man natürlich nur begrenzte Möglichkeiten zur Darstellung von Bildern, jedoch für so kleine Smileys und Pfeile ist dieses bestens geeignet.
lachender Smiley auf der 8x8 LED Matrix Ausgabe von Scrolltext auf der LED Matrix Da wie erwähnt die kleine LED Matrix nur begrenzten Platz für Zeichen bietet, gibt es die Möglichkeit Text auf diesem durchscrollen zu lassen. void loop() { //Funktion zum anzeigen eines Textes auf der LED Matrix, //Parameter: //String - die Zeichenkette welche ausgegeben werden soll, //Zahl - Wert in Millisekunden pro Zeichen //Typ //ACTION_SHIFT - jedes Zeichen einzeln anzeigen, //ACTION_SCROLLING - den Text durch die Matrix scrollen lassen matrix.writeString("Hallo Welt!", 1000, ACTION_SCROLLING); matrix.display(); } Damit ich das Video aufnehmen konnte, sodass meine Kamera den Text erfasst, habe ich ein kleines Tuch vor die LED Matrix gehängt.
Ändern der default I2C Adresse im Programm
Wenn du bereits Sensoren oder Aktoren am I2C Bus angeschlossen hast, dann kann es vorkommen, dass die default I2C Adresse der LED Matrix bereits belegt ist und du diese im Programm überschreiben musst. (Oder auch, wenn du mehrere solcher Matrixen an einem I2C Bus anschließen möchtest.) Dazu findest du in der Funktion setup den Aufruf der Funktion "matrix.ini();". Diese Funktion kann einen Parameter vom Typ uint8_t übernehmen und hat als default den Wert des Feldes HT16K33_DEFAULT_I2C_ADDR. #define HT16K33_DEFAULT_I2C_ADDR 0x70 Wir übergeben also nun den Hexadezimalen Wert, welchen wir aus der Tabelle (siehe I2C Adressen via Lötbrücken) entnehmen können. Und brauchen quasi in unserem Programm nichts weiter anpassen. matrix.init(0x71);
Vergleich zwischen 8x8 LED Matrix - MAX7219 & HT16K33
Zum Schluss möchte ich dir noch gerne die Unterschiede zur LED Matrix mit dem MAX7219 Chip aufzeigen. Diese LED Matrix verfügt ebenso wie die vorgestellte Matrix über 8x8 LEDs und kann ebenso einfach programmiert werden.
8x8 LED Matrix mit HT16K33 Treiberchip
8x8 LED Matrix mit MAX7219 Treiberchip Jedoch kannst du diese Matrix zu mehreren zusammenstecken und so eine schier endlose Anzeige aufbauen.
MAX7219 Shields auf einem Stativ Die LED Matrix mit Grove Schnittstelle jedoch kannst du nicht so kaskadierend aufbauen und somit bist du mit dem Modul in deinen Möglichkeiten stärker beschränkt.
Fazit zur Programmierung der 8x8 LED Matrix mit Grove Schnittstelle am Arduino
Die LED Matrix von Seeedstudio mit Grove Schnittstelle und HT16K33 Treiberchip lässt sich super einfach programmieren. Du benötigst wenig Code und über die I2C Schnittstelle und dem Grovekabel hast du deutlich weniger Verkablung als bei der LED Matrix mit MAX7219, leider vermisse ich hier die Möglichkeit die Module kaskadierend zu verbinden und so ein langes Display für Laufschrift aufzubauen. Mit dem Online LED Matrix Editor kannst du dir jedoch recht einfach kleine Frames für die Matrix erstellen und in den Code kopieren. Ausblick Ich werde nun mal schauen, welche kleinen Projekte man mit dieser Matrix aufbauen kann. Jedoch würde ich eher zu einer RGB Matrix tendieren, denn diese kann bei gleicher Baugröße verschiedenfarbige Pixel anzeigen. Read the full article
0 notes