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


#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define DHTPIN 2
#define DHTTYPE DHT22

#define LED_PIN 3
#define RELAY_PIN 4
#define BUTTON_PIN 5

DHT dht(DHTPIN, DHTTYPE);

// Адрес обычно 0x27 или 0x3F
LiquidCrystal_I2C lcd(0x27, 16, 2);

bool lightState = false;
bool lastButtonState = HIGH;

void setup() {
  Serial.begin(9600);

  pinMode(LED_PIN, OUTPUT);
  pinMode(RELAY_PIN, OUTPUT);
  pinMode(BUTTON_PIN, INPUT_PULLUP);

  dht.begin();

  lcd.init();
  lcd.backlight();

  lcd.setCursor(0, 0);
  lcd.print("Smart Home");
  delay(2000);
  lcd.clear();
}

void loop() {
  float temp = dht.readTemperature();

  if (isnan(temp)) {
    lcd.setCursor(0, 0);
    lcd.print("DHT Error      ");
    return;
  }

  // Управление реле
  bool fanState = false;
  if (temp > 28) {
    digitalWrite(RELAY_PIN, HIGH);
    fanState = true;
  } else {
    digitalWrite(RELAY_PIN, LOW);
    fanState = false;
  }

  // Кнопка
  bool buttonState = digitalRead(BUTTON_PIN);
  if (buttonState == LOW && lastButtonState == HIGH) {
    lightState = !lightState;
    digitalWrite(LED_PIN, lightState ? HIGH : LOW);
    delay(200);
  }
  lastButtonState = buttonState;

  // ===== Вывод на LCD =====
  lcd.setCursor(0, 0);
  lcd.print("Temp: ");
  lcd.print(temp);
  lcd.print(" C   ");

  lcd.setCursor(0, 1);
  lcd.print("L:");
  lcd.print(lightState ? "ON " : "OFF");

  lcd.print(" F:");
  lcd.print(fanState ? "ON " : "OFF");

  delay(1000);
}