#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include <DHT.h> //Tambahkan perpustakaan DHT
RTC_DS1307 rtc;
LiquidCrystal_I2C lcd(0x27, 20, 4); // Alamat I2C dan ukuran LCD (16 kolom, 2 baris)
DHT dht(8, DHT22); // Menggunakan pin 2 untuk sensor DHT22
char HariDalamMinggu[7][12] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jum'at", "Sabtu"};
byte loveSymbol[8] = {
0b00000,
0b01010,
0b11111,
0b11111,
0b11111,
0b01110,
0b00100,
0b00000
};
byte fingerHeartSymbol[8] = {
B00000,
B01010,
B10101,
B10001,
B01010,
B00100,
B00000,
B00000
};
byte degreeSymbol[8] = {
B00110,
B01001,
B01001,
B00110,
B00000,
B00000,
B00000,
B00000
};
void setup() {
Serial.begin(9600);
pinMode(7, OUTPUT); // LED indikator
if (!rtc.begin()) {
Serial.println("RTC tidak terhubung, Cek kembali wiring!");
while (1);
}
if (!rtc.isrunning()) {
Serial.println("RTC tidak bekerja, Setel ulang waktu!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
lcd.init();
lcd.backlight(); // Mengaktifkan backlight LCD
// Membuat simbol Love dengan indeks 0
lcd.createChar(0, loveSymbol);
lcd.createChar(1, fingerHeartSymbol);
lcd.createChar(2, degreeSymbol);
lcd.setCursor(0, 0);
for (int i = 0; i < 20; i++) {
lcd.write((uint8_t)1); // Menampilkan simbol Love di seluruh layar
}
lcd.setCursor(0, 1);
for (int i = 0; i < 20; i++) {
lcd.write((uint8_t)0); // Menampilkan simbol Love di seluruh layar
}
lcd.setCursor(0, 2);
for (int i = 0; i < 20; i++) {
lcd.write((uint8_t)1); // Menampilkan simbol Love di seluruh layar
}
lcd.setCursor(0, 3);
for (int i = 0; i < 20; i++) {
lcd.write((uint8_t)0); // Menampilkan simbol Love di seluruh layar
}
digitalWrite(7, HIGH); // Menyalakan LED indikator
delay(30000); // Tunggu 1 detik
digitalWrite(7, LOW); // Mematikan LED indikator
lcd.clear();
}
void loop() {
DateTime now = rtc.now();
int temperature = dht.readTemperature(); // Baca suhu dari sensor DHT
int humidity = dht.readHumidity(); // Baca kelembaban dari sensor DHT
lcd.setCursor(2, 0);
lcd.print(HariDalamMinggu[now.dayOfTheWeek()]);
lcd.print(":");
lcd.print(now.day(), DEC);
lcd.print('/');
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.year(), DEC);
lcd.setCursor(6, 1);
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.print(now.second(), DEC);
lcd.setCursor(0, 2);
lcd.print("Temp:");
lcd.print(temperature);
lcd.write(2);
lcd.print("C");
lcd.setCursor(0, 3);
lcd.print("Humidity:");
lcd.print(humidity);
lcd.print("%");
delay(10000);
}