#include #include #include #include #include "DHT.h" //====================================== Temperatureinstellungen #define solltemp 18 #define stufe1 solltemp+4 #define stufe2 solltemp+5 #define stufe3 solltemp+6 #define stufe4 solltemp+8 #define stufe5 solltemp+10 //============================================================== #define DHTPIN 2 #define FanPin 9 #define DHTTYPE DHT22 #define i2c_Address 0x3c #define SCREEN_WIDTH 128 // OLED display width #define SCREEN_HEIGHT 64 // OLED display height #define OLED_RESET -1 // QT-PY / XIAO Adafruit_SH1106G display = Adafruit_SH1106G(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); float temp; String status; DHT dht(DHTPIN, DHTTYPE); void setup() { display.begin(i2c_Address, true); display.display(); delay(2000); display.clearDisplay(); dht.begin(); pinMode(FanPin, OUTPUT); } void loop() { // Lüftersteuerung delay(2000); float temp = dht.readTemperature(); if (temp <= solltemp) { digitalWrite(FanPin, LOW); status = "AUS "; } else if (temp >= stufe5) { digitalWrite(FanPin, HIGH); status = "Stufe-MAX"; } else if (temp >= stufe4) { digitalWrite(FanPin, 220); status = "Stufe-4 "; } else if (temp >= stufe3) { analogWrite(FanPin, 150); status = "Stufe-3 "; } else if (temp >= stufe2) { analogWrite(FanPin, 90); status = "Stufe-2 "; } else if (temp >= stufe1) { digitalWrite(FanPin, 65); status = "Stufe-1 "; } else if (temp <= solltemp) { analogWrite(FanPin, 55); status = "Stufe-LOW"; } // text display display.setTextSize(1); display.setTextColor(SH110X_WHITE); display.setCursor(0, 0); display.println("Lueftersteuerung"); display.println (""); display.print("Aktuell: "); display.print (temp); display.println (" Grad C"); display.print ("Solltemp: "); display.print (solltemp); display.print (" Grad C"); delay(2000); display.display (); display.clearDisplay(); }