#include "DHT.h"
#include <LiquidCrystal_I2C.h>
#include "RTClib.h"
#define DHTPIN 2
#define DHTTYPE DHT22
LiquidCrystal_I2C lcd(0x27, 20, 4);
DHT dht(DHTPIN, DHTTYPE);
RTC_DS1307 rtc;
void setup() {
Serial.begin(9600);
if (!rtc.begin()) {
Serial.println(F("Couldn't find RTC"));
while (1);
}
if (!rtc.isrunning()) {
Serial.println(F("RTC is NOT running, let's set the time!"));
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
lcd.init();
lcd.backlight();
dht.begin();
}
void loop() {
// Wait a few seconds between measurements.
delay(2000);
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
if (isnan(temperature) || isnan(humidity)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
DateTime now = rtc.now();
char time_buf[17];
sprintf(time_buf, "%04u/%02u/%02u %02u:%02u:%02u",
now.year(), now.month(), now.day(),
now.hour(), now.minute(), now.second());
// Display data on the LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Hum: "));
lcd.print(humidity);
lcd.setCursor(0, 1);
lcd.print(F("Temp: "));
lcd.print(temperature);
// lcd.print((char)223); // Degree symbol
// delay(3000); // Wait 3 seconds before the next update
lcd.setCursor(0, 2);
lcd.print(F("Date: "));
lcd.print(now.year());
lcd.print(F("/"));
lcd.print(now.month());
lcd.print(F("/"));
lcd.print(now.day());
lcd.setCursor(0, 3);
// lcd.print(F("Time: "));
lcd.print(time_buf);
// Print data to Serial Monitor
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print("%, Temperature: ");
Serial.print(temperature);
Serial.print((char)223);
Serial.print("C, ");
Serial.print("Date: ");
Serial.print(now.year());
Serial.print("/");
Serial.print(now.month());
Serial.print("/");
Serial.print(now.day());
Serial.print(", Time: ");
Serial.print(time_buf);
Serial.println();
delay(3000); // Wait 3 seconds before the next update
}