#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <ESP32Servo.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int servoPin = 15;
Servo servo;
void setup() {
Serial.begin(9600);
dht.begin();
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Temp: C");
lcd.setCursor(0, 1);
lcd.print("Humi: %");
servo.attach(servoPin, 500, 2400);
}
int pos = 0;
int leistung = -1;
void loop() {
delay(2000);
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" °C, Humidity: ");
Serial.print(humidity);
Serial.println(" %");
lcd.setCursor(7, 0);
lcd.print(temperature);
lcd.setCursor(7, 1);
lcd.print(humidity);
lcd.setCursor(14, 1);
lcd.print("%");
if(temperature <= 20){
leistung = 50;
}else if(temperature >= 40){
leistung = 1;
}else{
leistung = (int)(((40 - temperature) / 20.0) * 50);
}
Serial.print(leistung);
for (pos = 0; pos <= 180; pos += 1) {
servo.write(pos);
delay(leistung);
}
for (pos = 180; pos >= 0; pos -= 1) {
servo.write(pos);
delay(leistung);
}
}