#include <LiquidCrystal_I2C.h>
#include <ESP32Servo.h>
LiquidCrystal_I2C lcd(0x27, 16 ,2);
Servo myservo;
int pos = 90;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("LED geht an, wenn Helligkeit zu Dunkel");
Serial.println("Servo(Fenster) öffnet sich, wenn Temperatur überschritten wird.");
Serial.println("Alarm LED und Buzzer geht an, wenn Bewegungsmelder Bewegung erkennt
Wire.begin(4, 5);
lcd.init();
lcd.backlight();
lcd.setCursor(1, 0);
pinMode(2, OUTPUT); //
pinMode(4, OUTPUT); //
pinMode(5, OUTPUT); //
pinMode(14, OUTPUT); // Helligkeitssensor Digital Output
pinMode(27, OUTPUT); // Helligkeitssensor Analog Output
pinMode(32, OUTPUT); // Haus Licht LED
pinMode(35, OUTPUT); // Rote Alarm LED
pinMode(22, OUTPUT); // Bewegungsmelder
pinMode(34, OUTPUT); // Buzzer
myservo.attach(23); // Servomotor
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
// Helligkeitssensor und Ausgabe
lcd.setCursor(1, 0);
lcd.print("Licht: ");
if (digitalRead(14) == LOW) {
digitalWrite(32, HIGH);
lcd.print("An!");
} else {
digitalWrite(32, LOW);
lcd.print("Aus!");
}
// Temperatursensor und Ausgabe
const float BETA = 3950;
int analogValue = analogRead(2);
float celsius = 1 / (log(1 / (4095. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
int temp = static_cast<int>(celsius);
lcd.setCursor(1, 1);
lcd.print("Temperatur: ");
lcd.print(temp);
delay(100);
// Servomotor drehen auf Basis der Temperatur
if (temp >= 24) {
myservo.write(0); // Grundposition
} else {
myservo.write(90); // "Fenster auf"
}
}
Buzzer LED Bewegungsmelder weitermachen.