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


#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
#define BUTTON_PIN 8
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define OFF_STATE   0
#define MODE1_STATE 1
#define MODE2_STATE 2
int currentState = OFF_STATE;
void pressButton() {
  digitalWrite(BUTTON_PIN, HIGH);
  delay(200);
  digitalWrite(BUTTON_PIN, LOW);
  delay(1000);
}
void setState(int targetState) {
  if (currentState == targetState) return;
  while (currentState != targetState) {
    pressButton();
    if (currentState == OFF_STATE) {
      currentState = MODE1_STATE;
    }
    else if (currentState == MODE1_STATE) {
      currentState = MODE2_STATE;
    }
    else {
      currentState = OFF_STATE;
    }
  }
}
void setup() {
  pinMode(BUTTON_PIN, OUTPUT);
  digitalWrite(BUTTON_PIN, LOW);
  dht.begin();
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Humidifier");
  lcd.setCursor(0, 1);
  lcd.print("Starting...");
  delay(2000);
  lcd.clear();
}
void loop() {
  float temperature = dht.readTemperature();
  float humidity = dht.readHumidity();
  if (isnan(temperature) || isnan(humidity)) {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Sensor Error");
    delay(2000);
    return;
  }
  // Выбор режима по влажности
  if (humidity < 30) {
    setState(MODE1_STATE);
  }
  else if (humidity < 55) {
    setState(MODE2_STATE);
  }
  else {
    setState(OFF_STATE);
  }
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("T:");
  lcd.print(temperature, 1);
  lcd.print((char)223);
  lcd.print("C ");
  lcd.print("H:");
  lcd.print(humidity, 0);
  lcd.print("%");
  lcd.setCursor(0, 1);
  if (currentState == MODE1_STATE) {
    lcd.print("MODE1");
  }
  else if (currentState == MODE2_STATE) {
    lcd.print("MODE2");
  }
  else {
    lcd.print("OFF");
  }
  delay(3000);
}