#include "DHT.h"
#include "RTClib.h"
#include <LiquidCrystal_I2C.h>
RTC_DS1307 rtc;
#define DHTPIN 2
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednsday", "Thursday", "Friday", "Saturday"};
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
DHT dht(DHTPIN, DHTTYPE);
void showStartScreen(){ // функция для вывода начального текста
lcd.setCursor(6, 1);// перемещение курсора
String message_1 = "Weather"; //создание переменной с текстом для второй строки
for (byte i=0; i<message_1.length(); i++) //вывод текста второй строки по одному символу
{
lcd.print(message_1[i]);
delay(50);
}
delay(500);
lcd.setCursor(6, 2);
String message_2 = "station"; //создание переменной с текстом для второй строки
for (byte i=0; i<message_2.length(); i++) //вывод текста второй строки по одному символу
{
lcd.print(message_2[i]);
delay(50);
}
delay(500);
}
/*void setup() {
Serial.begin(115200);
Serial.println(F("DHT22 example!"));
dht.begin();
}*/
/*
void setup () {
Serial.begin(115200);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
}
void setup() {
// Init
lcd.init();
lcd.backlight();
// Print something
lcd.setCursor(3, 0);
lcd.print("Hello, world!");
lcd.setCursor(2, 1);
lcd.print("Wokwi Online IoT");
lcd.setCursor(5, 2);
lcd.print("Simulator");
lcd.setCursor(7, 3);
lcd.print("Enjoy!");
}
*/
void setup() {
dht.begin();
rtc.begin();
lcd.init();
lcd.backlight();
lcd.begin(20,4);
showStartScreen(); //запуск начальноо текста
lcd.clear();
lcd.cursor();
lcd.setCursor(1,0);
DateTime now = rtc.now();
}
void loop() {
DateTime now = rtc.now();
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Check if any reads failed and exit early (to try again).
/*if (isnan(temperature) || isnan(humidity)) {
lcd.print(F("Failed to read from DHT sensor!"));
return;
}*/
lcd.setCursor(1,0);
lcd.print("Weather station:");
lcd.setCursor(1,2);
lcd.print(F("Humidity: "));
lcd.print(humidity);
lcd.print(F("%"));
lcd.setCursor(1,3);
lcd.print(F("Temp: "));
lcd.print(temperature);
lcd.print(F("C "));
delay(5000);
lcd.clear();
lcd.setCursor(1,0);
if (! rtc.begin()) {
lcd.println("Couldn't find RTC");
//abort();
}
lcd.print("Time: ");
lcd.setCursor(1,1);
lcd.print(now.year(), DEC);
lcd.print('/');
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.day(), DEC);
lcd.setCursor(1,2);
lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
lcd.setCursor(1,3);
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.print(now.second(), DEC);
lcd.println();
delay(5000);
lcd.clear();
}