Temperatur & Luftfeuchtigkeit messen

Lektion
Downloads

Jetzt wird es ernst: Mithilfe deiner neuen Bibliotheken misst du mit dem DHT11 die Temperatur und Luftfeuchtigkeit – und zeigst diese Werte in deinem Seriellen Monitor an.

Lass uns zunächst einen Blick auf die Bibliotheken werfen.

Bibliotheken im Sketch einbinden

Damit du eine Bibliothek (die du zuvor installiert hast) auch verwenden kannst, musst du sie zu Beginn deines Sketchs einbinden. Damit kann dein Programm auf die Funktionen, die in der Bibliothek hinterlegt sind, zugreifen.

Die Bibliothek für deinen Sensor bindest du ganz einfach mit einer Zeile Code ein:

#include "DHT.h"

Wie du siehst, verwendest du hierfür den Befehl #include gefolgt vom Namen der Bibliothek samt der Endung .h in Anführungsstrichen. Wichtig: Zeilen mit #include darfst du nicht mit einem Semikolon ; abschließen – eine Ausnahme, die ansonsten zu einem Fehler führen würde.

Die Bibliothek Adafruit Unified Sensor musst du nicht einbinden, diese arbeitet nur im Hintergrund.

Oft sind die Namen der Bibliotheken im Bibliotheksverwalter und hinter dem Befehl #include identisch. In diesem Fall ist das ausnahmsweise nicht der Fall – lass dich hiervon bitte nicht irritieren.

Übrigens: Fast alle Bibliotheken hinterlegen nach der Installation Beispiele. Du findest sie im Menü Datei -> Beispiele. Für unsere Bibliothek wähle hier den Eintrag DHT sensor library. Dort findest du Beispiel-Sketches, in denen du mehr Informationen zum Einbinden und den Funktionen erhältst.

___STEADY_PAYWALL___

Anschluss und Sensor festlegen

Damit die Bibliothek weiß, an welchem Pin der Sensor angeschlossen ist und um welchen Sensor (DHT11 oder DHT22, dem “größeren Bruder” des DHT11) es sich überhaupt handelt, musst du diese beiden Parameter zunächst definieren:

#define DHTPIN 4   
#define DHTTYPE DHT11

Auch das machst du zu Beginn des Sketchs, gleich nachdem du die Bibliothek eingebunden hast. Du verwendest hierfür die Funktion #define – die ebenso wie #include nicht mit einem Semikolon ; abgeschlossen wird.

Variablen für die Temperatur & Luftfeuchtigkeit

Damit du deine Messungen temporär speichern kannst, benötigst du zwei Variablen – eine für die Temperatur und eine für die Luftfeuchtigkeit:

float temp;
float humidity;

Da dein Sensor hier auch die Zehntel-Grad bzw. -Prozent misst, müssen diese Variablen vom Typ float sein.

Den Sensor starten

Als nächstes erstellst du ein Objekt auf Basis der Bibliothek namens dht. Dieser Instanz gibst du den oben definierten Anschlusspin und den Sensortyp mit:

DHT dht(DHTPIN, DHTTYPE);

Nun folgt auch schon die Setup-Funktion. Hier startest du zunächst den Seriellen Monitor und gleich danach auch den Sensor:

void setup() {
  Serial.begin(9600);
  dht.begin();
}

Messung und Ausgabe der Werte

Zeit für den Loop. Hier kannst du auf zwei Funktionen zurückgreifen, die dir die Bibliothek des Sensors bereitstellt. Mit diesen Funktionen speicherst du die aktuellen Messwerte in der jeweiligen Variablen:

temp = dht.readTemperature();
humidity = dht.readHumidity();

Wie du sicherlich schon erkannt hast, liest die Funktion dht.readTemperature() die Temperatur und dht.readHumidity() die Luftfeuchtigkeit. Diese Werte kannst du wie gewohnt Variablen zuweisen, die du dann später weiterverwendest.

Interessant ist die Schreibweise der Funktionen. Zu Beginn siehst du das Objekt dht – dieses “weiß” mittlerweile, welchen Sensor du verwendest und an welchem Pin dieser angeschlossen ist. Dahinter – getrennt mit einem Punkt – greifst du auf eine “Unterfunktion” zu, die dein Objekt bereitstellt: entweder readTemperature() oder readHumidity().

Als nächstes gibst du deine Messwerte im Seriellen Monitor aus. Wie das funktioniert, weißt du bereits aus vorangegangenen Lektionen. Wie du siehst, kommen hier nun die beiden Variablen temp und humidity zum Einsatz:

Serial.print("Temperatur: ");
Serial.print(temp);
Serial.println(" *C");
Serial.print("Luftfeuchtigkeit: ");
Serial.print(humidity);
Serial.println(" %");

Damit dein Sensor nicht von einer Messung zur nächsten hetzt, schließe den Loop mit einem Delay ab – z.B. zwei Sekunden:

delay(2000);

Und das war es! Lade den Sketch aus den Downloads dieser Lektion auf deinen Arduino und öffne deinen Seriellen Monitor. Du solltest nun etwas in dieser Art sehen:

DHT22 Ausgabe im Seriellen Monitor