LED-Matrix

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

Auswahlmenü nach Klick auf „Grundlagen“

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

Das Programm: Lauftext „Hallo“, im Anschluss dauerhaft blinkender Pfeil

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.

Folgekapitel (RGB-LED) >>>