LED-Matrix

Bei der ersten Inbetriebnahme wird man von einer Laufschrift und einem blinkenden Pfeil auf der LED-Matrix des Calliope mini begrüßt, die dazu auffordern, die eingebauten Tasten zu drücken. Die Programmierung dieser Begrüßung mit Hilfe des PXT (Makecode) Editors ist denkbar einfach: Unter Grundlagen findet man die Klammer „beim Start“, in die der Programmblock „zeige Zeichenfolge“ eingebunden und aus dem „Hello!“ ein „Hallo!“ gemacht werden muss.

Im Anschluss an die Begrüßung einen blinkenden Pfeil auf der LED Matrix erscheinen zu lassen, ist ähnlich unkompliziert: In dem Programmierfeld „zeige LEDs“ wird ein Pfeil zusammengeklickt mit einem leeren Feld in der Schleife „dauerhaft“ verbunden.

Das Blinken des Pfeils über die Tasten A und B zu beenden, führt dann über die „Grundlagen“ hinaus und bleibt hier ungeklärt.


Für den Arduino gibt es keine 5×5 Matrix, deshalb kommt hier eine mit 8×8 LEDs von Adafruit zum Einsatz. Sie verfügt über ein I2C-Inface, das sich mit zwei Datenleitungen zur Steuerung der LEDs begnügt.

Die Verbindung zum Arduino gestaltet sich entsprechend einfach:

Die Anschlüsse an der LED-Matrix sind (in der Abbildung von links nach rechts) mit + und – sowie C (clock) und D (data) gekennzeichnet. + wird mit 5V, – mit GND, D mit A4 und C mit A5 verbunden.

Zum Betreiben der LED-Matrix werden die Bibliotheken „Adafruit_LED_Backpack-master“ und „Adafruit-GFX-Library-master“ benötigt, die hier heruntergeladen werden können.

Wenn die Bibliotheken in der Arduino-IDE eingebunden sind, steht unter „Datei > Beispiele > Adafruit LED Backpack Library“ ein Programmbeispiel für die 8 x 8 Matrix mit vielen Variationen bereit.  Es ist lohnend, sich die Details näher anzuschauen, um grundsätzliche Einsichten zum Programmieren einer LED-Matrix zu gewinnen.

Hier ein Programm mit Erklärungen, das in Abwandlung des Musterbeispiels im PXT-Editor entstanden ist.

#include <Wire.h>
#include <Adafruit_GFX.h>
#include „Adafruit_LEDBackpack.h“
Adafruit_8x8matrix matrix = Adafruit_8x8matrix();
void setup() {
  matrix.begin(0x70);
}
static const uint8_t PROGMEM
/********************************************
 * Smiley 1 erstellen: 1 = LED an, 0 = LED aus
 ********************************************/
froehlich_bmp[] =
{ B00111100,
  B01000010,
  B10100101,
  B10000001,
  B10100101,
  B10011001,
  B01000010,
  B00111100
},
/********************************************
 * Smiley 2 erstellen 1 = LED an, 0 = LED aus
 *******************************************/
frostig_bmp[] =
{ B00111100,
  B01000010,
  B10100101,
  B10000001,
  B10011001,
  B10100101,
  B01000010,
  B00111100
};
void loop() {
  /*************************************
   * 1. Matrix löschen
   * 2. LED Zeile 0, Platz 0 anschalten
   * 3. Befehl ausführen
   ************************************/
  matrix.clear();
  matrix.drawPixel(0, 0, LED_ON);
  matrix.writeDisplay();
  delay(2000);
  /*************************************
   * 1. Matrix löschen
   * 2. froehlich_bmp darstellen, bei
   *    Zeile 0, Platz 0 beginnen und
   *    bei Zeile 8, Platz 8 aufhören
   * 3. Befehl ausführen
   ************************************/
  matrix.clear();
  matrix.drawBitmap(0, 0, froehlich_bmp, 8, 8, LED_ON);
  matrix.writeDisplay();
  delay(2000);
  /*************************************
   * 1. Matrix löschen
   * 2. frostig_bmp darstellen, bei
   *    Zeile 0, Platz 0 beginnen und
   *    bei Zeile 8, Platz 8 aufhören
   * 3. Befehl ausführen
   ************************************/
  matrix.clear();
  matrix.drawBitmap(0, 0, frostig_bmp, 8, 8, LED_ON);
  matrix.writeDisplay();
  delay(2000);
} 

Eine Programmierung mit Ardublock ist nicht möglich, weil die eingesetzte Hardware nicht unterstützt wird.


Das LED-Modul kann bei der Firma Exp-Tech erworben werden. Die Komponenten müssen miteinander verlötet werden. Alle nötigen Hilfen dazu finden sich hier.