#include "DHT.h"
//#include <SPI.h>
#include <Wire.h>
//#include <Adafruit_GFX.h>
#include "RTClib.h"
#define DHTPIN 2
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
#include <LiquidCrystal_I2C.h>
DHT dht(DHTPIN, DHTTYPE);
//LiquidCrystal_I2C lcd(0x27, 16, 2);
LiquidCrystal_I2C lcd(0x27, 20, 4);
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
int powerPin = 3;
void setup() {
Serial.begin(9600);
lcd.init();
// Print a message to the LCD.
lcd.backlight();
// jadikan pin power sebagai output
pinMode(powerPin, OUTPUT);
// default bernilai LOW
digitalWrite(powerPin, LOW);
dht.begin();
if (! rtc.begin())
{
lcd.print("Couldn't find RTC");
while (1);
}
if (! rtc.isrunning())
{
lcd.print("RTC is NOT running!");
}
}
void loop() {
digitalWrite(powerPin, HIGH);
float kelembaban = dht.readHumidity();
float suhu = dht.readTemperature();
Serial.print("kelembaban: ");
Serial.print(kelembaban);
Serial.print(" ");
Serial.print("suhu: ");
Serial.println(suhu);
lcd.clear();
DateTime now = rtc.now();
lcd.setCursor(0,0);
lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
lcd.print(" ");
lcd.print(now.day());
lcd.print('/');
lcd.print(now.month());
lcd.print('/');
lcd.print(now.year());
lcd.print(" ");
lcd.print(now.hour());
lcd.print(':');
lcd.print(now.minute());
lcd.print(' ');
lcd.setCursor(0,1);
lcd.print("Kelembaban: ");
lcd.setCursor(11,1);
lcd.print(kelembaban);
lcd.setCursor(0,2);
lcd.print("Suhu: ");
lcd.setCursor(5,2);
lcd.print(suhu);
if(suhu>=28){
lcd.setCursor(0,3);
lcd.print("AC ON");
}
else
{
lcd.setCursor(0,3);
lcd.print("AC OFF");
}
delay(1000);
}