Um Sensoren, Displays, Shields, Motoren etc. über die Arduino IDE ansprechen zu können, benötigt man i.d.R. Bibliotheken. Mit ihrer Hilfe vereinfacht sich das Programmieren der Objekte und erspart einem das Zugriffs-/Ansprech-Problem mühsam selbst enträtseln zu müssen. In diesem Kapitel wird beschrieben und an einem Beispiel des MultiFunction Shields gezeigt, wie man sich selbst eine Bibliothek erstellen kann.
Ausgangspunkt ist ein lauffähiges einfaches Arduino-Programm, das dann Schritt-für-Schritt in eine Bibliothek umgewandelt wird.
Allgemeine Informationen zu Bibliotheken
Arduino Bibliotheken, die nicht zur „Grundausstattung“ gehören, sind im Ordner „Arduino/libraries“ als Unterordner abgelegt. Die Unterordner tragen den Namen der jeweiligen Bibliothek.
In den Bibliotheksordnern befinden sich
Weitere Bemerkungen:
Die benutzte Hardware (s. Abb. 1) für das Einstiegsbeispiel besteht aus:
Abb. 1
Arduino UNO R3 mit einem Multifunction Shield (MFS). Die vier LEDs (rot) sind markiert.
Der Shield verfügt über:
4x LED, 3x Taster, 1x Reset, 1x Potenziometer, 1x Buzzer, 4 Ziffern 7-Segment-Anzeige, 1x Anschlusssockel für LM35, 1x Anschlusssockel für Dallas DS18B20, integrierter IR-Empfänger..
Die Vorgehensweise
Übung 1 - Eine Bibliothek erstellen
Schritt 1 - Hauptprogramm erstellen | ||
Material |
|
|
Aufgaben |
|
Das Video zeigt alle vier Lichtmuster des Programms LED_1.ino (Dauer: ca. 40 sec)
Methoden/Funktionen auslagern
Im ersten Umwandlungsschritt werden mit Hilfe des Editors Notepad ++ im Ordner LED_1 des Programms LED_1.ino die Dateien LED_1.h (Headerdatei) und LED_1.cpp (Programmdatei) angelegt und alle Funktionen/Methoden aus dem Hauptprogramm LED_1.ino in die Header-Datei übertragen, mit Ausnahme der Methoden setup() und loop().
Schritt 2 - Funktionen in die Header-Datei übertragen | ||
Aufgaben |
|
Hauptdatei LED_1.ino:
Header-Datei LED_1.h:
Die Sprache C++ ist Objekt orientiert; die Objekte werden nach einem Bauplan, den wir Klasse nennen (engl. Class), erstellt. Das in dieser Übung betrachtete Objekt sind die vier LEDs auf dem MultiFunctionShield mit ihren Eigenschaften und Methoden oder Funktionen; den Bauplan dazu bezeichnen wir als class LED_1. Anders ausgedrückt, eine Klasse kapselt alle zusammengehörigen Daten und Methoden vom Rest des Programms ab . Dies erfolgt jetzt in mehreren Schritten.
Eine Klasse einrichten
Schritt 3 - class LED_1 einrichten | ||
Aufgaben |
|
Datei LED_1.h
Abb. 4a - Änderungen in der HEADER-Datei: Die ersten zwei Compiler-Direktiven verhindern ein mehrfaches Aufrufen der Header-Datei, die dritte Direktive lädt die Header-Datei Arduino.h.
Bei der Deklaration einer Klasse werden ihre members (Daten, Funktionen/Methoden) festgelegt; sie erfolgt immer in einer Header-Datei -> LED_1.h.
Der neue Name der Klasse wird in Programmzeile 5 vergeben: class LED_1 {...};
Das Schlüsselwort public weist darauf hin, dass alle Methoden der Klasse außerhalb der Klasse aufrufbar sind.
Datei LED_1.ino
Nach erfolgreichem Testlauf des Compilers kommt Schritt 4, die Implementierung der Memberfunktionen..
Implementierung der Memberfunktionen in der Datei LED_1.cpp
Schritt 4 - Implementierung der Member-Funktionen | ||
Aufgaben |
|