#include <DHT.h>
#include <DHT_U.h>
#include <iarduino_RTC.h>
iarduino_RTC time(RTC_DS1302, 10, 12, 11); // для модуля DS1302 - RST, CLK, DAT
// iarduino_RTC time(RTC_DS1307); // для модуля DS1307 с i2C
// iarduino_RTC timeRTC_DS3231); // для модуля DS3231 с i2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define DHTPIN 2
//DHT dht(DHTPIN, DHT22); //Инициация датчика
DHT dht(DHTPIN, DHT11);
int ThermistorPin = A0;
int Vo;
float R1 = 10000; // значение R1 на модуле
float logR2, R2, T2;
float c1 = 0.001129148, c2 = 0.000234125, c3 = 0.0000000876741; //коэффициенты Штейнхарта-Харта для термистора
#define AUTO (8)
#define MENU (7)
#define LEFT (6)
#define RIGHT (5)
#define SELECT (4)
#define ONOFF (3)
#define LED (9)
void setup() {
Serial.begin(9600);
dht.begin();
lcd.init();
lcd.backlight(); // Включаем подсветку дисплея
time.begin();
//time.settime(0, 48, 9, 10, 7, 23, 2); // 0 сек, 30 мин, 18 часов, 12, июня, 2020, четверг
}
void loop() {
delay(1000);
Vo = analogRead(ThermistorPin);
R2 = R1 * (1023.0 / (float)Vo - 1.1); //вычислите сопротивление на термисторе
logR2 = log(R2);
T2 = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2)); // температура в Кельвине
T2 = T2 - 273.15; //преобразование Кельвина в Цельсия // 2 секунды задержки
float h = dht.readHumidity(); //Измеряем влажность
float t = dht.readTemperature(); //Измеряем температуру
if (isnan(h) || isnan(t)) { // Проверка. Если не удается считать показания, выводится «Ошибка считывания», и программа завершает работу
Serial.println("Ошибка считывания");
return;
}
Serial.print("Влажность: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Температура: ");
Serial.print(t);
Serial.println(" *C "); //Вывод показателей на экран
if (millis() % 1000 == 0)
lcd.setCursor(0, 0);
lcd.print(time.gettime("d.m.y"));
lcd.setCursor(10, 0);
lcd.print(time.gettime("H:i"));
lcd.setCursor(0, 1);
lcd.print("T1: ");
lcd.setCursor(3, 1);
lcd.print(t);
lcd.setCursor(8, 1);
lcd.print("T2: ");
lcd.setCursor(11, 1);
lcd.print(T2);
delay(1);
}