Wie im vorherigen Kapitel angekündigt will ich die Verwendung von Libraries (Library = Einzahl) vorstellen.

Libraries was, warum, wieso.

Libraries sind kleine Programme die beispielsweise Sensoren, Aktoren oder elektronische Schaltungen steuern. Gäbe es diese Libraries (Bibliotheken) nicht müsste man bei der Erstellung eines Sketches diese selbst programmieren.

Will man z.B. einen Sketch mit einem Temperatursensor der seinen Wert an einem LCD-Display ausgibt erstellen, müsste man die genauen Parameter und Schnittstellen sowohl vom Temperatursensor als auch vom LCD-Display kennen und hierfür eine Steuerung programmieren. Wer kann das schon, ich nicht.

Ich schreibe nur einen Sketch der die Verwaltung des Sensors und des Displays am Mikrocontroller beschreibt. Um die genaue Arbeitsweise der Bauteile brauche ich mich nicht zu kümmern, da ich in meinen Sketch einfach die Libraries benenne die deren Steuerung übernehmen.

Library einbinden

Diese Libraries kennt jedoch Arduino nicht automatisch. Ich muss sie vorher in meine Arduino-IDE einbinden.

Das Beispiel:

Am besten erkläre ich das an oben genannten Beispiel. Ich verwende hierzu den Temperatur- und Luftfeuchtesensor DHT 22 als Messsensor. Die Ausgabe erfolgt an einem LCD-Display 1602 mit seriellen I2C Schnittstelle. Als Mikrocontroller nehme ich wieder den Nano.

I2C – Datenbus

I2C ist ein serieller Datenbus, der es erlaubt mit nur 2 Leitungen (Two-Wire) das Display zu steuern.

Die Leitungen tragen die Bezeichnung “SDA“ für die Daten und “SCL“ für die Taktleitung. Standardmäßig ist SDA an Pin A04 und SCL an PIN A05.

Würde ich meine Anzeige ohne dieses Protokoll aufbauen, müsste erheblich mehr Verdrahtung zwischen Mikrocontroller und Display vorhanden sein, was auch mehr Pins am Mikrocontroller belegen würde, die dann im Sketch entsprechend aufwendig programmiert werden müssten.

Wie die Bilder zeigen, sieht der Aufbau mit dem I2C-Bus (rechtes Bild) deutlich entspannter aus.

Der Schaltplan:
Der Sketch:

So, meine Schaltung hätte ich aufgebaut bzw. nach den Vorgaben des Sketches erstellt. Den Sketch habe ich mir aus dem Internet down geladen. Leider kann ich nicht mehr sagen von welcher Seite. Der Autor möge mir verzeihen und ich hoffe er hat auch nichts gegen die Verwendung an dieser Stelle.
So sieht der Sketch aus und kann in den Arduino Editor kopiert werden. Einfach aus dem Textfile durch Markieren – strg+C  in die Zwischenablage kopieren und danach mit strg+V in das Editorfenster

Durch Anklicken des Häkchens oben links wird der Sketch kompiliert und auf Fehler überprüft. Dabei braucht es nicht lange und es wird mir sofort eine Fehlermeldung ausgegeben. Arduino hat die Bibliotheken für den DHT und das Display noch nicht zur Verfügung.

Die Libraries:

Diese Bibliotheken (Libraries) stelle ich nun zur Verfügung. Unter Werkzeuge – Bibliotheken verwalten… gelangt man in den Bibliotheksverwalter. Zunächst will ich die Library für mein LCD-Display (“LiquidCrystal_I2C.h“ ). Oben gebe ich für die erste Bibliothek die ich suche kurz “liquid“ ein und es werden mir Bibliotheken mit diesem Inhalt angezeigt, so auch die von mir gesuchte.

Unter “More info“ sehe ich welche Dateien enthalten sind, so auch meine “LiquidCrystal_I2C.h“ ich wähle noch die Version aus. In der Regel die neuste und bestätige mit Installieren.

In gleicher Weise gehe ich beim Temperatursensor vor.

Unter DHT wird mir die Bibliothek für den DHT11 und den DHT22 angezeigt. Prima, ich wähle wieder Version und Installieren aus. Doch hier geht ein weiteres Fenster auf. Wenn ich diese Bibliothek lade, erkennt der Bibliothekenverwalter,  benötige ich noch weitere Libraries die noch nicht geladen sind. Also noch “Install all“ angeben und alle Libraries werden geladen. Für die Wire.h Library brauche ich keine weitere Laden, denn diese ist schon in der “LiquidCrystal_I2C.h“  enthalten.

Wo kann ich sehen welche Libraries geladen sind?

Unter Datei – Voreinstellungen gelangt man in das Fenster Voreinstellungen. Hier wird mir unter Sketchbook-Speicherort das Verzeichnis gezeigt, unter dem ich mein Verzeichnis für die geladenen Libraries finde. Dieser Pfad ist nicht immer identisch und kann je installierter Version abweichen. Daher immer unter Datei – Voreinstellungen prüfen wie er lautet.

Ich sehe also unter dem Pfad “ C:\Users\User\Documents\Arduino“ nach. Hier befindet sich ein Verzeichnis Arduino. Nachdem ich dieses öffne erscheint das Verzeichnis Libraries. In diesem finde ich nun meine geladenen Bibliotheken.

Sicherheitshalber schließe ich noch einmal mein Arduinoprogramm und starte es neu, damit auch alle Libraries übernommen werden. Dann lade ich wieder meinen Sketch, den ich “DHT22_Anzeige_I2C_16x2“ genannt habe. Wieder auf das Häkchen oben links geklickt und der Kompiliervorgang startet von neuem. Diesmal läuft er durch und zeigt keine Fehler.

Damit kann ich mein Programm auf den Mikrocontroller spielen. Durch Klick auf den Pfeil neben dem Häkchen. Nachdem das Programm geladen ist, beginnt es mir auch sofort die Temperatur und die Luftfeuchte anzuzeigen.


Library von externer Quelle

Findet man die gewünschte Library nicht unter „Bibliotheken verwalten“, kann man diese auch von anderen Quellen downloaden. Eine Hauptquelle ist hier die Github Seite unter “https://github.com“. Oben in das Suchfenster gebe ich den Bibliotheknamen ohne den Anhang ein und bestätige mit “All GitHub“.

Nun öffnet sich eine neue Internetseite mit einer Auswahl von Bibliotheken die sich mit meiner Library befassen. Ich öffne mal eine dieser Bibliotheken durch anklicken. In ihr befindet sich meine gesuchte Datei LiquidCrystal_I2C.h. Könnte also die richtige Bibliothek sein. Muss es aber nicht. Eventuell hat der Autor des down geladenen Skripts eine Notiz im Skript hinterlassen welche Bibliothek er verwendet hat. Wenn nicht, hilft nur probieren.

Nach Klick auf den grünen Button oben rechts (“Code“) wird mir der Download der Bibliothek als ZIP-File angeboten. Ich lade mir das ZIP-File herunter.

In meiner Arduino Anwendung suche ich unter Sketch – Bibliothek einbinden – .ZIP-Bibliothek hinzufügen…  und öffne das Fenster Bibliothek auswählen. Hier navigiere ich in mein Download-Verzeichnis. Noch mit öffnen bestätigen und die Bibliothek wird in mein Library-Verzeichnis entpackt. Entsprechend kann auch mit der Bibliothek für den DHT-Sensor verfahren werden.

Am besten man Schließt nun das Arduino-Programm vollständig und startet es erneut. Nun meinen Sketch laden und diesen prüfen lassen (Häkchen oben links).

Wenn alles geklappt hat und die Libraries die richtigen für mein Projekt waren müsste mein Sketch nun ohne Fehler Kompiliert werden.

Oftmals liefern bereits die Hersteller von Sensoren und Aktoren eigene Libraries für ihre Produkte mit. Die Zip-Dateien können dann wie beschrieben geladen werden. Der Sketch ist dann entsprechend der Anweisung der Schnittstellen aus der Bibliothek zu erstellen.

Eine Bibliothek kann auch direkt in das Bibliotheken-Verzeichnis Kopiert werden. Dabei ist zu berücksichtigen, dass alle Dateien der Bibliothek in einem Bibliotheken-Verzeichnis sind und nicht direkt im Library-Verzeichnis.

Z.B. meine Bibliothek als Zip-Datei entpacke ich zunächst  in das Download-Verzeichnis mit “Alle extrahieren“.

Danach verschiebe ich das gesamte Verzeichnis in mein Library-Verzeichnis. Nun am besten das Arduino Programm neu starten damit die Library sicher eingebunden wird.

Damit habe ich eine kleine Vorstellung gegeben was Libraries sind und wie sie verwendet und installiert werden. Oftmals ist es gar nicht so einfach die richtige Library zu finden mit der mein Sketch auch zusammenarbeitet, zumal ich i.d.R. diesen nicht selbst programmiert habe sondern mir aus dem Internet kopiert habe. Oftmals weiß ich nicht, sofern der Autor nicht in einer Notiz im Skript die Library benennt, auf welcher Bibliothek das Programm basiert. Dann muss man halt probieren bis es läuft. An dieser Stelle all denen meinen Dank, die sich die Mühe machen Sketche zu erstellen und mir, der kaum Programmiererfahrung hat, zur Verfügung zu stellen damit ich meine Projekte verwirklichen kann.