Baue ein Analog-Thermometer

Digitale Thermometer mit Display sind schön und gut – etwas mehr Retro-Charme erhältst du jedoch mit einem analogen. Außerdem lernst du hierbei deinen Servo-Motor besser kennen. In dieser Lektion baust du dir ein Thermometer mit einem Zeiger, der dir auf einer Skala die Temperatur anzeigt.

SERVO UND DHT11 AUFBAUEN

Vielleicht hast du deinen Servo ja noch aus der vorherigen Lektion auf deinem Breadboard installiert. Beachte bitte, dass das Kabel für das Signal in dieser Lektion im Digitalpin 8 steckt. Baue nun deinen Temperatursensor DHT11 neben den Sensor. In der untenstehenden Skizze haben wir den Sensor mit vier Pins verwendet – wenn du einen DHT11 mit drei Pins hast, installiere ihn entsprechend. Schließe das Signalkabel jedoch auch in diesem Fall am Digitalpin 4 an.

___STEADY_PAYWALL___

Aufbau Analog-Thermometer

DER SKETCH FÜR DEIN THERMOMETER

In den Downloads dieses Projekts findest du den Sketch für dein Analog-Thermometer. Lade ihn dort herunter und anschließend auf deinen Arduino hoch. Nach dem Upload sollte dein Servo eine bestimmte Position ansteuern. Warum er das tut, schauen wir uns nun genauer an.

Den oberen Bereich kennst du schon aus dem kurzen Test und aus anderen Projekten, die den Sensor DHT11 verwendet haben:

#include <Servo.h>
#include "DHT.h"

Servo myServo;

#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

Es folgen zwei Variablen, die du für die Temperatur und die passende Position des Zeigers auf dem Thermometer benötigst. Die Variable temp ist vom Typ float, da dein DHT11 die Temperatur auf das Zehntel genau, also als Kommazahl, misst. Für den Winkel reicht hingegen ein int.

float temp;
int winkel;

Auch das Setup des Sketchs kennst du bereits:

void setup() {
  Serial.begin(9600);
  dht.begin();
  myServo.attach(9);
  myServo.write(180);
}

Interessant wird es nun im Loop. Hier misst du zunächst die Temperatur und zeigst sie im Seriellen Monitor an.

  temp = dht.readTemperature();
  Serial.println(temp);

Anschließend verwendest du die Funktion map(), um die gemessene Temperatur auf einen Winkel zwischen 0° und 180° umzulegen und in die Variable winkel zu schreiben.

winkel = map(temp, 10, 30, 180, 0);

Im obigen Beispiel findest du einen Temperaturbereich von 10°C bis 30°C – dieser Bereich wäre geeignet für einen Wohnraum. Du kannst ihn aber natürlich auch anpassen.

Anschließend übergibst du den gefundenen Winkel an deinen Servo und zeigst ihn noch kurz in deinem Seriellen Monitor an. Zuletzt folgt noch ein Delay von zwei Sekunden, um die Messungen zu begrenzen. Auch hier bist du natürlich frei ein deiner Wahl.

  Serial.println(winkel);
  myServo.write(winkel);
  delay(2000);

BAUE DIR EINE SKALA

Im Prinzip ist dein Analog-Thermometer jetzt einsatzbereit. Ohne entsprechende Skale wird es allerdings schwierig herauszufinden, was dein Servo-Motor dir sagen will. 😉

Deshalb benötigst du eine Schablone, die du am Servo anbringst. Hierfür kannst du selbst kreativ werden oder du probierst erst einmal folgende Schablone auf Instructables aus. In der Mitte befindet sich ein Rechteck, das du ausschneiden kannst, um deinen Servo-Motor hindurch zu stecken.

Diese Skala arbeitet mit dem Temperaturbereich von 0°C bis 30°C, der auch im Sketch dieses Projekts verwendet wird. Wenn du deine eigene Skala bastelst, achte darauf, dass der niedrigste Wert ganz links unten im gedachten Halbkreis des Servos liegt. Und der höchste Wert entsprechend rechts unten.

Wenn alles fertig ist, könnte dein Analog-Thermometer wie folgt aussehen:

YouTube

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden