Arduino-Projekt: Mini-Mac statt Grußkarte

Seite 2: Programmierung

Inhaltsverzeichnis

Sind alle elektronischen Bauteile vorhanden, kann der Code erstellt und getestet werden. Voraussetzung ist die Arduino-Softwareumgebung.

Zur Ansteuerung des Displays gibt es mehrere Arduino-Bibliotheken. Wir nutzen zwei des Hardwareherstellers Adafruit: Adafruit_SSD1306 (für den Controller SSD1306 des Displays) und das Grafikpaket Adafruit_GFX . Nach der Installation der Bibliotheken kann es direkt losgehen. Dreh- und Angelpunkt ist ein Display-Objekt, hier der Einfachheit halber display genannt, welches zum Programmstart angelegt werden muss:

Adafruit_SSD1306 display;

In diesem Objekt sind alle Methoden zum Zugriff auf das angeschlossene Display enthalten. Arduino-typisch gibt es zum Beispiel eine Methode namens begin() zur Initialisierung der Verbindung. Im ersten Parameter wird die Art der Stromversorgung konfiguriert und im zweiten Parameter die I²C-Adresse des Displays festgelegt:

void setup () {
display.begin(SSD1306_SWITCHCAPVCC,0x3C);
}

Darüber hinaus stellt die SSD1306-Bibliothek all die graphischen Primitive (Setzen eines Punktes, Zeichnen von Linien, Kreisen, Rechtecken sowie Textausgabe) zur Verfügung, die zum Betrieb benötigt werden. Auch Funktionen zur Ausgabe von Bitmaps und Sprites sind da.

Da unser Display keine Graustufen darstellen kann, ist die Organisation der Pixel im Programmspeicher sehr speicherschonend. Das Bild wird Zeile für Zeile in einem Byte-Vektor abgelegt, wobei in jedem der Bytes acht aufeinander folgende Pixel liegen. Insgesamt sind deshalb für ein Bild mit 64 Zeilen bei jeweils 128 Pixeln gerade einmal 1024 Byte nötig. Das Übersetzen eines beliebigen Binärbildes in solch einen Byte-Vektor muss man nicht von Hand machen, dafür gibt es gute Tools wie zum Beispiel den LCD Assistant von Radosław Kwiecień.

Der Mini-Mac grüßt

Im vorliegenden Beispielprogramm wurden die Ausgaben und Animationen in kleinen Unterprogrammen zusammengefasst, so dass sich unsere klassische Endlosschleife loop() sehr einfach lesen lässt (siehe Downloadlink am Ende der ersten Seite). Insgesamt vier verschiedene Animationen werden nacheinander ausgeführt und danach der gesamte Vorgang wiederholt. Natürlich gehört auch eine Textausgabe dazu. Damit diese nicht zu langweilig ausfällt, wird der Text mit kleinen Pausen zwischen den einzelnen Zeichen, ähnlich wie beim Tippen auf einer Schreibmaschine, ausgegeben:

void ausgabeText(String text, byte x, byte y, byte groesse) {
display.setTextSize(groesse);
display.setTextColor(WHITE);
display.setCursor(x,y);

for (int i=0; i<text.length(); i++) {
display.write(text[i]);
display.display();
delay(WAIT);
}

Neben diesen klassisch animierten Textausgaben und einer kleinen Blume stellt ein animierter Sternenhimmel den Höhepunkt eines jeden Durchgangs dar – frei nach dem Motto: „Für Dich soll es nicht nur heute Sterne regnen“. Hier sind die Möglichkeiten für die Umsetzung eigener Ideen grenzenlos.

Das Hochladen des Programms gestaltet sich beim Arduino Pro Mini etwas aufwändiger als beim Uno. Aufgrund seiner kleinen Bauform gibt es keinen USB-Anschluss. Hier ist deshalb ein externer USB-Seriell-Adapter mit TTL-Pegel nötig. Den haben die meisten Maker schon längst in ihrer Bastelkiste. Alternativ lässt sich auch ein Arduino Uno zum Programmer umfunktionieren.

Viel Spaß beim Basteln Ihres eigenen, individuellen Geschenks.