Beschreibung
Bibliotheken, auch genannt Libraries, werden benötigt, wenn komplexe
Vorgänge in möglichst einfachen Befehlen ausführbar sein sollen. Die
komplexen Vorgänge bleiben dann für den Nutzer verborgen, sind aber
durch einfache Befehle nutzbar. Manche Bibliotheken benötigen wir öfters
als andere, z.B. die des LC-Displays. Im Folgenden lernst du mehrere
Wege, wie du einfach neue Bibliotheken hinzufügen kannst.
- Klicke auf das Büchersymbol auf der Linken Seite.
- Gebe den Namen der Bibliothek ein, die du hinzufügen möchtest. In
den Anleitungen, in denen eine Bibliothek benötigt wird, ist immer
der Name der Bibliothek oder der Suchbegriff angegeben.
- So sieht ein Sucheintrag aus. Achtung! Manchmal wollen wir eine
Bibliothek von einem bestimmten Autor oder eine bestimmte Version.
- Zum Schluss dürfen wir nicht vergessen, in der ersten Zeile unseres
Codes einen Eintrag wie unten anzufertigen. Zum Beispiel
#include LiquidCrystal_I2C.h>

Auf das Büchersymbol klicken

Ansicht des Bibliotheksverwalter

Einbinden der Bibliothek in den Code
Aufgaben
Beschreibe wie man eine Bibliothek einbindet?
Man wählt sie in der Kategorie “Bibliotheken verwalten” aus, installiert
sie und bindet sie schließlich ein mit #include <BIB_HEADER.h>
Worauf muss man beim Einbinden einer Bibliothek achten?
Auf die richtige Version und sie richtig zu inkludieren mit
#include <BIB_HEADER.h>
Beschreibung
Die Arduino IDE (Integrated Development Environment) ist unsere
Programmierumgebung für den Arduino. Mit ihrer Hilfe können wir dem
Arduino beibringen, was er zu tun hat, indem wir Befehle eingeben und
ihm sagen, an welchen Pins Sensoren und Aktoren anliegen. Bevor wir das
tun, müssen wir allerdings ein paar Dinge sicherstellen:
Verbinde zuerst deinen Arduino per USB Kabel mit dem Rechner.
Wähle den Arduino aus der Leiste aus
Kopiere anschließend den Code in die Arduino IDE oder schreibe den
Code selbst.
Um den Code auf den Arduino hochzuladen, klicke auf den Pfeil
.
Du kannst den Code auch vor dem Hochladen kompilieren lassen, indem du
auf
klickst. Der
Unterschied zum Hochladen ist der, dass hier kein Arduino angeschlossen
werden muss und nur geprüft wird, ob dein Code korrekt ist. Wenn du
alles richtig programmiert hast und die vorherigen Schritte befolgt
hast, erscheint anschließend eine Meldung, dass das Kompilieren
erfolgreich abgeschlossen wurde.

Erfolgreiches kompilieren
Andernfalls erscheint eine Fehlermeldung, die dich darauf hinweist, was
falsch gelaufen ist und markiert für dich die betreffende Zeile rot.

Fehlt am Ende einer Befehlszeile ein Semikolon? Dann siehst du dieses Bild. Erkennbar ist der Fehler an der letzten Zeile: expected ‘;’..

Hast du einen Codeblock (zB. setup oder loop) nicht mit geschweiften Klammern umschlossen? Erkennbar ist der Fehler an der letzten Zeile: expected ‘}’.. oder expected ‘{’ ..

Nutzt du Befehle einer Bibliothek ohne diese vorher einzubinden, sind diese der Arduino IDE unbekannt. Der erste unbekannte Befehl wird dann rot markiert.
Was ist ein Arduino Uno?
Der Arduino Uno ist ein frei programmierbarer Microcontroller. Er wurde
von der Firma Arduino entwickelt und wird mit der Arduino eigenen
Software programmiert, welche frei verfügbar ist.
Was ist ein Microcontroller?
Ein Microcontroller ist ein kleiner Computer. Er besitzt einen oder
mehrere Prozessoren, Speicher, Arbeitsspeicher und kann darüber hinaus
auch noch zusätzliche Features wie z.B. ein Wi-Fi-Module oder eine LCD
Anzeige besitzen. Seine Aufgabe ist es in einer elektrischen Schaltung
wie ein Gehirn zu funktionieren. Das bedeutet, er soll Informationen,
die er von Sensoren wie z.B. einem Ultraschallsensor bekommt verarbeiten
und mit diesen einen oder mehrere Akteure wie z.B. eine LED ansteuern.
Aufbau eines Arduino

Arduino Übersicht
Digitale Pins
Die digitalen Pins eines Arduinos sind für die digitale Datenübertragung
(Siehe Hintergrundwissen -> Grundlagen). Darüber hinaus gibt es noch
Pins mit einer Tilde (~) vor der Zahl. Diese Pins besitzen, neben der
standard digitalen Übertragung, noch die Pulsweitenmodulation (PWM). Bei
der PWM handelt es sich um eine Übertragungsmethode, bei der ein Puls
nach seiner Länge abgetastet wird und somit ein Puls-Pause-Verhältnis
erstellt wird. Ausgehend von diesem Verhältnis kann die Spannungszufuhr
reguliert werden. Das bedeutet, dass bei einem Verhältnis von 25%, der
Puls, also der Spannungsgebende Teil des Signals, 25% der Gesamtlänge
des Signals ausmacht. Die restlichen 75% sind die Pause. Damit lassen
sich zum Beispiel Motoren in ihrer Geschwindigkeit drosseln, bzw.
beschleunigen. Ein weiteres besonderes Pin-Paar ist der Pin 0 und 1.
Diese sind TX bzw. RX Pins und dienen als serielle Schnittstelle, also
zur Kommunikation mit anderen Geräten wie z.B. einem Raspberry Pi oder
einem Bluetooth Modul.
!ACHTUNG! Diese Pins sind nicht für die reguläre digitale
Nachrichtenübertragung geeignet.
Analoge Pins
Die analogen Pins des Arduinos sind für die analoge Datenübertragung
(Siehe Hintergrundwissen -> Grundlagen). Diese sind standardmäßig als
Input definiert.
Stromkreis Pins
Über den Pin kann der Arduino mit einer Spannungsquelle bis 20V
verbunden werden. Der Anschluss ist jedoch nur der Spannungsversorgende
Teil des Stromkreises.
- GND
- Die GND Pins sind für die Erdung (Ground). Bei einer Batterie
ist dies der Minuspol. Er schließt den Stromkreis und ist
essenziell, wenn der Arduino über den 5V oder 3,3V Pin mit einer
Spannungsquelle verbunden ist.
- 3,3V
- Über den 3,3V Pin kann der Arduino mit Spannung versorgt werden,
wenn man eine konstante Spannungsquelle hat die nicht größer ist
als 3,3V. Darüber hinaus kann der Arduino mit diesem Pin
angeschlossene Geräte wie z.B. einen Ultraschallsensor mit einer
konstanten Spannung von 3,3V versorgen.
- 5V
- Bei diesem Pin verhält es sich genauso wie mit dem 3,3V Pin, nur
mit 5V.
- Reset
- Der Reset Pin ist zum Verbinden eines externen IOREF.
- AREF
- AREF steht für Analog Reference und ist für eine genauere
Bestimmung eines analogen Signals mit Hilfe einer externen
analogen Referenz zwischen 0V und 5V gedacht. Dies kann sinnvoll
sein, wenn der benutzte Sensor nur eine geringe maximale
Spannung liefert. In so einem Fall kann man mit dem AREF Pin
eine höhere Auflösung erzielen.
- IOREF
- IOREF steht für Input/Output Reference und ist ebenfalls zur
genaueren Bestimmung eines analogen Signals, nutzt aber die
interne Input/Output Spannung des verwendeten Chips. Bei einem
Arduino Uno wären das 5V.
- Reset Knopf
- Der Arduino Uno besitzt einen bereits eingebauten Reset Knopf.
Dieser kann dafür verwendet werden, um das Programm neu zu
starten. Er löscht nicht das Programm vom Arduino.
Stromversorgung
Der Stromversorgungsanschluss des Arduino ist eine Hohlbuchse, über die
der Arduino mit einer Spannung zwischen 7V und 12V versorgt werden kann.
Sie ist zu benutzen, wenn der Arduino nicht mit dem USB-Anschluss
verbunden ist.
USB-Typ-B Anschluss
Der USB-Anschluss ist die Schnittstelle zum PC. Mit Hilfe eines USB-A zu
USB-B Kabel kann der Arduino hierüber mit einem Computer verbunden
werden. Dieser versorgt den Arduino dann auch mit Strom.
Aufgaben
Ein Arduino ist ein frei programmierbarer Mikrocontroller.
Welche Pins gehören zum Stromkreis?
- Ground GND
- Spannung (3,3V, 5V)
- Reset
- AREF,
- IOREF
- Reset Knopf
Erkläre wofür digitale Pins notwendig sind!
Diese sind für eine digitale Datenübertragung notwendig. Besondere Pins
sind der TX bzw. RX Pins welche als serielle Schnittstelle dienen.
Erkläre wofür analoge Pins notwendig sind!
Analoge Pins sind als standardmäßiger Input definiert und werden für
eine analoge Datenübertragung benötigt.
Beschreibung
Der serielle Monitor kann dazu genutzt werden, um am PC zu verfolgen,
welche Befehle der Arduino gerade ausführt. Das ist beispielsweise
nützlich, wenn wir den exakten Wert ermitteln wollen, welchen ein
angeschlossener Sensor misst. So spart man sich den Anschluss des
LC-Displays, ist jedoch an den PC gebunden, weil man für den seriellen
Monitor eine USB-Verbindung zum Arduino braucht.
Aufrufen können wir ihn wie im Bild zu sehen oben rechts über das
Lupensymbol.

Um vom seriellen Monitor Gebrauch zu machen, müssen wir folgende Zeilen
in unseren setup Codeblock einfügen: Serial.begin(9600);
. Mithilfe von
Serial.print("Dieser Text wird nun auf dem seriellen Monitor ausgegeben");
oder Serial.print(Co2Messwert);
können wir Text oder Variablen auf dem
seriellen Monitor anzeigen lassen.
So könnte ein Messung auf dem seriellen Monitor aussehen. Als Beispiel
wurde der Abstand zwischen einem Hindernis und dem Arduino mit einem
Ultraschallsensor gemessen (siehe AB Ultraschallsensor - Eine
Einführung).

Abstandsmessung mit einem Ultraschallsensor auf dem seriellen Monitor
Code
int TRIG_PIN = 9; // Trig_Pin angeschlossen an Pin 9.
int ECHO_PIN = 10; // Echo_Pin angeschlossen an Pin 10.
int LED = 13; // Initiiere LED unter Pin 13.
void setup() {
// Starte serielle Schnittstelle zur Kommunikation mit dem Arduino.
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED, OUTPUT);
}
void loop() {
int zeit; // Hier speichern wir, wie lange der Schall unterwegs ist.
int abstand; // Hier speichern wir den gemessenen Abstand.
// Wir messen den Abstand zum nächsten Objekt.
digitalWrite(TRIG_PIN, LOW); // Lautsprecher aus.
delay(2);
digitalWrite(TRIG_PIN, HIGH); // Lautsprecher gibt Ton aus.
delay(10);
digitalWrite(TRIG_PIN, LOW); // Lautsprecher aus.
zeit = pulseIn(ECHO_PIN, HIGH); // Hier wird gemessen, wann das Mikrofon den Ton hört.
abstand = zeit * 0.034 / 2; // Umrechnung des Abstands von Zeit in Zentimeter.
if (abstand < 12) { // Wenn der Abstand kleiner als 12 Zentimeter ist.
digitalWrite(LED, HIGH); // Schalte die LED an
// und zeige dies auf dem seriellen Monitor an.
Serial.println("Ein Hindernis ist weniger als 12cm entfernt.");
} else { // sonst
digitalWrite(LED, LOW); // Schalte die LED aus.
// Zeige auch dies auf dem Monitor an.
Serial.println("Kein Hindernis in Sicht.");
}
}
Aufgaben
Was kann ein serieller Monitor?
Mit dem seriellen Monitor können vom Arduino ausgeführte Befehle
verfolgt und Messwerte direkt ausgegeben und abgelesen werden ohne ein
externes Display anschließen zu müssen.
Schnappt euch einen Sensor, schreibt euch einen simplen Code und
überprüft die Messwerte anhand des seriellen Monitors. Vergleicht
anschließend die Ausgaben des seriellen Monitors mit denen auf einem
LCD-Display.
Häufige Fragen und Probleme
Kann ich mit dem seriellen Monitor auch Graphen abbilden?
Nein, dafür ist der serielle Plotter eher geeignet.
Meine Messwerte werden brauchen zu lange bis sie angezeigt werden, was kann ich tun?
Verkürze die delays und/oder überprüfe deine Verkabelung. Wenn gar
nichts klappt resete den Arduino.
Beschreibung
Genauso wie der serielle Monitor kann auch der serielle Plotter dazu
genutzt werden, um am PC zu verfolgen, welche Messwerte der Arduino
gerade verarbeitet. Die Messwerte, welcher ein angeschlossener Sensor
misst, werden graphisch dargestellt. So hat man einen direkt sichtbaren
Verlauf der Messung, jedoch ist der Arduino nicht portabel, weil für die
Ausgabe durch den seriellen Monitor oder Plotter eine USB-Verbindung vom
Arduino zum PC benötigt wird.
Aufrufen können wir ihn wie im Bild zu sehen ist mit den Schritten 1 &
2.

Schritte 1 & 2
Um vom seriellen Monitor Gebrauch zu machen, müssen wir folgende Zeilen
in unseren setup Codeblock einfügen: Serial.begin(9600);
. Mithilfe von
Serial.print("1-10:");
und Serial.print(ZufallsZahlen1);
können wir
die Graphenbezeichnung und die Messwerte bzw. in diesem Beispiel die
generierten Zufallszahlen in einem bestimmten Intervall, welche in
Variablen gehalten werden, auf dem seriellen Plotter graphisch abbilden
lassen.
So könnte ein Graph auf dem seriellen Plotter aussehen. Als Beispiel
wurden Zufallszahlen in zwei verschiedenen Intervallen, nämlich die
Zahlen 1-10 und 10-20, generiert und abgebildet. Der Plotter erstellt
selbstständig eine Legende, da wir ihm die Beschriftung mit dem Befehl
Serial.print("1-10:");
übergeben haben. In blau zeichnet der Plotter
alle Zufallszahlen im Intervall 1-10 und in rot alle Zahlen im Bereich
10-20 ein.

Plotterbeispiel-Zufallszahlen
Durch den Befehl Serial.print(",");
werden alle Zahlen in die gleiche
Zeile geschrieben. Für einen Zeilenumbruch nach dem ersten Intervall
wird der Befehl Serial.println(",");
benötigt. Um einen Vergleich zum
seriellen Monitor zu bekommen, so würden die Messwerte hier aussehen. Es
wird zuerst das Intervall genannt und danach die generierte Zufallszahl,
wobei beide Intervalle durch ein Komma getrennt sind.

Als Vergleich zum Plotter die Darstellung auf dem seriellen Monitor
Code
void setup() {
Serial.begin(9600);
// Zufallsgenerator starten
randomSeed(analogRead(0));
}
void loop() {
// Zufallszahlen ermitteln
int ZufallsZahlen1 = random(1, 10);
int ZufallsZahlen2 = random(10, 20);
// Werte schreiben
Serial.print("1-10:");
Serial.print(ZufallsZahlen1);
Serial.print(",");
Serial.print("10-20:");
Serial.print(ZufallsZahlen2);
Serial.println(",");
delay(2000);
}
Aufgaben
Was kann ein serieller Plotter?
Ähnlich zum seriellen Monitor können die Messwerte, diesmal graphisch,
abgebildet werden. Jedoch lassen sie sich oft nicht exakt ablesen, weil
man die Achsenverteilung beachten muss oder der Text mit abgebildet
wird.
Schnappt euch einen Sensor, schreibt euch einen simplen Code und bildet
die Messwerte anhand des seriellen Plotters graphisch ab.
Häufige Fragen und Probleme
Kann ich mit dem seriellen Plotter auch exakte Werte wiedergeben?
Wenn die Achsen relativ klein sind kann man sie darstellen, um jedoch
wirklich exakte Messwerte zu erhalten oder verarbeitete Befehle
nachzuverfolgen ist der serielle Monitor besser geeignet.
Der Graph schwankt zu sehr hin und her oder braucht zu lange bis er die Messwerte ordentlich anzeigt, was kann ich tun?
- Verkabelung überprüft?
- Verkürze das delay, damit der Graph schneller gezeichnet wird.
- Falls ihr wie im Beispiel mit einem Pulssensor messt, achtet darauf
den Finger nicht zu fest auf den Sensor zu drücken und beim Messen
ihn nicht zu bewegen.