Загрузка данных


#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);
}