#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)
#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 pada tampilan awal LCD
lcd.setCursor(0, 1); // Untuk mengatur kursor pada baris 0 posisi 1
lcd.print("SUHU KELEMBABAN"); // Untuk menampilkan tulisan pada tampilan LCD
delay(3000); // Untuk jeda waktu, 3 detik pada tampilan awal LCD
lcd.clear(); // Untuk menghapus tulisan pada tampilan awal LCD setelah jeda waktu
lcd.setCursor(0,1); // Untuk mengatur kursor pada baris 0 poisi 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 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 pada LCD
}
void loop()
{
float t = dht.readTemperature(); // Untuk membaca nilai Temperature 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 pada tampilan LCD
lcd.setCursor(8, 1); // Untuk mengatur posisi kursor pada baris 8 posisi 1
lcd.print("ERROR"); // Untuk menampilkan tulisan 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 tulisan 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
lcd.print("%"); // Untuk menampilkan tulisan pada tampilan LCD
delay(2000); // Jeda waktu 2 detik untuk membaca nilai
}