#include "DHT.h"
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 2
#define DHTTYPE DHT22
RTC_DS1307 rtc;
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16,2);
int counter = 0;
char time_buf[16];
void setup() {
Serial.begin(9600);
Serial.println(F("DHTxx Test!"));
dht.begin();
lcd.init(); //inisialisasi LCD
// cetak pesan ke LCD
lcd.backlight();
#if ESP8266
while (!Serial); // menunggu serial port teroneksi
#endif
if (! rtc.begin()) {
Serial.println("RTC tidak ditemukan!");
Serial.flush();
abort();
}
if (! rtc.isrunning()) {
Serial.println(("RTC tidak berjalan, ayo mengatur waktunya!"));
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void dhtDimas() {
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if(isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
}
if(t<20) {
lcd.clear();
lcd.setCursor(5,1);
lcd.print("DINGIN");
}
else if (t>50) {
lcd.clear();
lcd.setCursor(5,1);
lcd.print("PANAS");
}
else {
lcd.setCursor(3,1);
lcd.print("BIASA");
lcd.print(" SAJA");
}
Serial.print(F("H:")); // F artinya dimasukan ke memory flash
Serial.print(h);
Serial.print(F("T:")); // mencetak di serial monitar menyamping
Serial.print(t);
Serial.println(F(" ºC"));
Serial.print(F("F:")); // mencetak di serial monitar menyamping
Serial.print(f);
Serial.println(F(" ºF"));
}
void rtcDimas() {
DateTime now = rtc.now();
sprintf(time_buf, "%04u/%02u/%02u %02u:%02u:%02u",now.year(), now.month(), now.day(), now.hour(), now.minute(), now.second());
Serial.print(time_buf);
Serial.println();
lcd.setCursor(0,0);
lcd.print(time_buf);
}
void loop() {
dhtDimas();
rtcDimas();
delay(2000);
}