#include #include #include //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 //Daten- und Taktpin des Displays festlegen und Initialisierung des Displays #define CLK 23 #define DIO 25 TM1637Display display(CLK, DIO); //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); //Helligkeit des Displays einstellen display.setBrightness(0x0f); //Seriellen Monitor mit einer Baudrate von 115200 starten Serial.begin(115200); } 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); //Temperatur in °C mit einer Nachkommastelle auf dem Display anzeigen display.showNumberDec(tC * 10); //Temperatur in °C ohne Nachkommastelle auf dem Display anzeigen //display.showNumberDec(tC * 1); //Temperatur auf dem seriellen Monitor ausgeben Serial.print(tC); Serial.println(" °C"); delay(500); }