#include <Wire.h> // UNTUK PEMANGGILAN LIBRARY KOMUNIKASI SERIAL I2C
#include <LiquidCrystal_I2C.h> // UNTUK PEMANGGILAN LIBRARY LCD I2C
#include "DHT.h" // UNTUK PEMANGGILAN LIBRARY SENSOR DHT
LiquidCrystal_I2C lcd(0x27, 16, 2) // UNTUK ALAMAT LCD DAN UKURAN LCD
#define PinDHT 2 // UNTUK MENDEFINISIKAN PINDHT ADALAH 2
#define TipeDHT DHT22 // UNTUK MENDEFINISIKAN TIPEDHT MENGGUNAKAN SENSOR DHT22/DHT11
;DHT dht (PinDHT, TipeDHT); // UNTUK SETTING PIN YANG DIPILIH DAN TIPE SENSOR DHT YANG DIGUNAKAN
byte suhu [8] = // UNTUK MEMBUAT IKON SUHU PADA TAMPILAN LCD
{
B00100,
B01010,
B01010,
B01110,
B11111,
B11111,
B01110,
B00000,
};
byte kelembaban [8] = // UNTUK MEMBUAT IKON LEMBAB PADA TAMPILAN LCD
{
B00100,
B01010,
B01010,
B10001,
B10001,
B10001,
B01110,
B00000,
};
void setup()
{
dht.begin(); // UNTUK KOMUNIKASI DHT DENGAN ARDUINO
lcd.init(); // UNTUK MENGINISIALISASI TAMPILAN LCD
lcd.backlight(); // UNTUK MENYALAKAN BACKLIGHT PADA TAMPILAN LCD
lcd.setCursor(0,0); // UNTUK MENGATUR KURSOR PADA BARIS 0 POSISI 0
lcd.print(" PENDETEKSI "); // UNTUK MENAMPILKAN TULISAN "PENDETEKSI" PADA TAMPILAN AWAL LCD
lcd.setCursor(0, 1); // UNTUK MENGATUR KURSOR PADA BARIS 0 POSISI 1
lcd.print("SUHU KELEMBABAN"); // UNTUK MENAMPILKAN TULISAN "SUHU KELEMBABAN" PADA TAMPILAN AWAL LCD
delay(3000); // JEDA WAKTU 3 DETIK
lcd.clear(); // UNTUK MENGHAPUS TULISAN PADA TAMPILAN AWAL LCD SETELAH JEDA WAKTU HABIS
lcd.setCursor(0,1); // UNTUK MENGATUR KURSOR PADA BARIS 0 POSISI 1
lcd.createChar(2, kelembaban); // UNTUK MEMBUAT IKON "LEMBAB" MUNCUL PADA TAMPILAN LCD
lcd.setCursor(0, 0); // UNTUK MENGATUR KURSOR PADA BARIS 0 POSISI 0
lcd.createChar(1, suhu); // UNTUK MEMBUAT IKON "SUHU" MUNCUL PADA TAMPILAN LCD
lcd.setCursor(0,0); // UNTUK MENGATUR KURSOR PADA BARIS 0 POSISI 1
lcd.write(1); // UNTUK MENULIS IKON "SUHU" PADA TAMPILAN LCD
lcd.print("SUHU"); // UNTUK MENAMPILKAN TULISAN "SUHU" PADA LCD
lcd.setCursor(0,1); // UNTUK MENGATUR KURSOR PADA BARIS 0 POSISI 1
lcd.write(2); // UNTUK MENULIS IKON "LEMBAB" PADA TAMPILAN LCD
lcd.print("LEMBAB"); // UNTUK MENAMPILKAN TULISAN "LEMBAB" PADA LCD
}
void loop()
{
float t = dht.readTemperature(); // UNTUK MEMBACA NILAI TEMPEREATURE PADA VARIABLE SUHU
float h = dht.readHumidity(); // UNTUK MEMBACA NILAI HUMIDITY PADA VARIABLE LEMBAB
if (isnan(h) || isnan(t)) // UNTUK JIKA SENSOR TIDAK DAPAT MEMBACA NILAI PADA TEMPERATURE DAN HUMIDITY/"ERROR"
{
lcd.setCursor(8, 0); // UNTUK MENGATUR POSISI KURSOR PADA BARIS 8 POSISI 0
lcd.print("ERROR"); // UNTUK MENAMPILKAN TULISAN "ERROR" PADA TAMPILAN LCD
lcd.setCursor(8, 1); // UNTUK MENGATUR KURSOR PADA BARIS 8 POSISI 1
lcd.print("ERROR"); // UNTUK MENAMPILKAN TULISAN "ERROR" PADA TAMPILAN LCD
return; // KEMBALI MENULISKAN NILAI KETIKA SENSOR DAPAT MEMBACA KEMBALI SUATU NILAI
}
float hif = dht.computeHeatIndex(t, h); // MENGHITUNG KEMBALI NILAI YANG DIBACA SENSOR
lcd.setCursor(8, 0); // UNTUK MENGATUR POSISI KURSOR PADA BARIS 8 POSISI 0
lcd.print(t); // UNTUK MENAMPILKAN NILAI TEMPERATURE PADA TAMPILAN LCD
lcd.print("C"); // UNTUK MENAMPILKAN SIMBOL "CELCIUS" PADA TAMPILAN LCD
lcd.setCursor(8, 1); // UNTUK MENGATUR POSISI KURSOR PADA BARIS 8 POSISI 1
lcd.print(h); // Untuk menampilkan nilai Humidity pada tampilan LCD UNTUK MENAMPILKAN NILAI HUMIDITY PADA TAMPILAN LCD
lcd.print("%"); // Untuk menampilkan tulisan pada tampilan LCD UNTUK MENAMPILKAN SIMBOL "%"
delay(2000); // JEDA WAKTU 2 DETIK UNTUK MEMBACA NILAI
}