#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define PIR_PIN 2
#define LED_PIN 3
#define DHT_PIN 4
#define DHTTYPE DHT22
DHT dht(DHT_PIN, DHTTYPE);
// адрес 0x27 — стандартный для Wokwi
LiquidCrystal_I2C lcd(0x27, 16, 2);
unsigned long lastMotionTime = 0;
const int timeout = 10000;
bool lightOn = false;
void setup() {
Serial.begin(9600);
pinMode(PIR_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
dht.begin();
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Smart Home");
delay(2000);
lcd.clear();
}
void loop() {
int motion = digitalRead(PIR_PIN);
if (motion == HIGH) {
digitalWrite(LED_PIN, HIGH);
lastMotionTime = millis();
lightOn = true;
}
if (lightOn && millis() - lastMotionTime > timeout) {
digitalWrite(LED_PIN, LOW);
lightOn = false;
}
float temp = dht.readTemperature();
float hum = dht.readHumidity();
// --- LCD ---
lcd.setCursor(0, 0);
lcd.print("Temp:");
lcd.print(temp);
lcd.print("C "); // чтобы затирать старые символы
lcd.setCursor(0, 1);
if (lightOn) {
lcd.print("Light: ON ");
} else {
lcd.print("Light: OFF");
}
// --- Serial ---
Serial.print("Temp: ");
Serial.print(temp);
Serial.print(" | Hum: ");
Serial.println(hum);
delay(2000);
}