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


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

// Настройки
#define DHTPIN 2
#define DHTTYPE DHT11

// Создаем объекты
LiquidCrystal_I2C lcd(0x27, 16, 2); // Адрес может быть 0x3F
DHT dht(DHTPIN, DHTTYPE);
RTC_DS3231 rtc;

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

  // Инициализируем дисплей
  lcd.init();
  lcd.backlight();
  lcd.print("Hello! Weather");
  lcd.setCursor(0, 1);
  lcd.print("Station is ON");

  // Запускаем датчик и часы
  dht.begin();
  if (!rtc.begin()) {
    lcd.print("RTC Error!");
    while (1);
  }
  // Раскомментируйте следующую строку для принудительной установки времени,
  // если часы сбились. После прошивки снова закомментируйте!
  // rtc.adjust(DateTime(F(DATE), F(TIME)));

  delay(2000);
  lcd.clear();
}

void loop() {
  // Спрашиваем у часов, который час
  DateTime now = rtc.now();

  // Читаем показания с датчика
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // Если датчик не отвечает, ругаемся
  if (isnan(h) || isnan(t)) {
    lcd.setCursor(0, 1);
    lcd.print("Sensor Error :(");
    return;
  }

  lcd.clear();

  // Выводим время и дату (красиво, с нулями)
  lcd.setCursor(0, 0);
  if (now.hour() < 10) lcd.print("0");
  lcd.print(now.hour());
  lcd.print(":");
  if (now.minute() < 10) lcd.print("0");
  lcd.print(now.minute());

  lcd.setCursor(8, 0);
  lcd.print(now.day());
  lcd.print("/");
  lcd.print(now.month());

  // Выводим температуру и влажность
  lcd.setCursor(0, 1);
  lcd.print("T:");
  lcd.print(t, 0);
  lcd.print((char)223); // Рисуем значок градуса
  lcd.print("C");

  lcd.setCursor(8, 1);
  lcd.print("H:");
  lcd.print(h, 0);
  lcd.print("%");

  // Обновляем данные раз в 5 секунд
  delay(5000);
}