Die Erklärung des Quelltexts ist auf der nächsten Seite. Der Quelltext für die Ausgabe der Temperatur über den Servomotor:

#include <OneWire.h>
#include <DallasTemperature.h>

//Daten-Pin für den Temperatursensor festlegen
#define temperatureSensorPIN 32

//Konstanten für die Ausgabe der Temperatur über den Servomotor
#define freq 50
#define resolution 8
#define channel 1
#define servoPin 13
#define minTemp 15      //minimale Temperatur vom DS18B20: -55°C
#define maxTemp 35      //maximale Temperatur vom DS18B20: +125°C

//Temperatursensor initialisieren
OneWire temperatureSensorWire(temperatureSensorPIN);
DallasTemperature temperatureSensor(&temperatureSensorWire);

void setup() 
{
  //Temperatursensor starten
  temperatureSensor.begin();

  //Servo initialisieren
  ledcSetup(channel, freq, resolution);
  ledcAttachPin(servoPin, channel);
  ledcWrite(channel, 20);
}

void loop() 
{
  //Temperatur in °C erfassen
  temperatureSensor.requestTemperatures();
  float tC = temperatureSensor.getTempCByIndex(0);

  //Ansteuerung des Servomotors
  int servoPos = map(tC, maxTemp, minTemp, 4, 33); //min und max wurden vertauscht, damit die Richtung des Zeigers passt
  ledcWrite(channel, servoPos);
  delay(500);
}
Last modified: Tuesday, 8 September 2020, 5:40 PM