#include "DHT.h" #include // Bibliothek importieren #define DHTPIN 12 // DHT11 an Pin 12 #define DHTTYPE DHT11 // DHT11 auswählen, bei WokWi ist es ein DHT22 DHT dht(DHTPIN, DHTTYPE); // PIN 12 und Type DHT22 int lcdAddress = 0x27; LiquidCrystal_I2C lcd(lcdAddress, 16, 2); //Drehpotentiometer am analogen PIN A0 #define KNOB A0 //definieren der LEDs #define LED1 4 //LED1 rot #define LED2 5 //LED2 grün #define LED3 6 //LED3 blau #define LED4 7 //LED4 gelb //minTemp festlegen const float minTemp = 20.0; float curTemp; void setup() { //DHT22 initialisieren dht.begin(); //Seriellen Monitor starten Serial.begin(9600); // Display initialisieren lcd.init(); lcd.clear(); lcd.setBacklight(1); // 0 = aus | 1 = ein //setzen der LEDs als Ausgang pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); pinMode(LED4, OUTPUT); } void loop() { //lesen des aktuellen Wertes am analogen Pin A0 int value = analogRead(KNOB); //lesen der aktuellen Temperatur (DHT22) curTemp = dht.readTemperature(); //mappen des Wertes vom Drehpotentiometers //auf einen Wert zwischen 22°C und 26°C. float maxTemp = map(value,0,1024,22,27); // Anzeige der Werte auf Display und im seriellen Monitor lcd.setCursor(0,0); // Cursor auf Zeile 1, Zeichen 1 setzen lcd.print("max. = "); lcd.print(maxTemp); lcd.print(" \337C"); lcd.setCursor(0,1); // Cursor auf Zeile 1, Zeichen 1 setzen lcd.print("akt. = "); lcd.print(curTemp); // Ausgabe: Temperatur lcd.print(" \337C"); Serial.print(minTemp); Serial.print(" - "); Serial.print(maxTemp); Serial.print(" - "); Serial.println(curTemp); //Auswertung und Anzeige mit LED if (curTemp > maxTemp) { digitalWrite(LED1, HIGH); digitalWrite(LED2, LOW); digitalWrite(LED3, LOW); } else if (curTemp < maxTemp && curTemp > 20) { digitalWrite(LED1, LOW); digitalWrite(LED2, HIGH); digitalWrite(LED3, LOW); } else { digitalWrite(LED1, LOW); digitalWrite(LED2, LOW); digitalWrite(LED3, HIGH); } delay(2000); }