#include <LiquidCrystal_I2C.h>
#include "DHT.h"
// ========== KONFIGURASI PIN ==========
#define pinButton1 33
#define pinButton2 25
#define DHTPIN 23
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
// ========== VARIABEL ==========
int button1 = 0;
int button2 = 0;
int menu = 0;
int masukMenu = 0;
bool k1 = 0;
bool k2 = 0;
int lastMenu = -1;
int Temp = 0;
int Humd = 0;
String Status_Read_Sensor = "";
// ========== FUNGSI ==========
void bacaDHT22() {
Humd = dht.readHumidity();
Temp = dht.readTemperature();
if (isnan(Humd) || isnan(Temp)) {
Status_Read_Sensor = "Failed";
Temp = 0;
Humd = 0;
} else {
Status_Read_Sensor = "Success";
}
Serial.print("Status: ");
Serial.print(Status_Read_Sensor);
Serial.print(" | Temp: ");
Serial.print(Temp);
Serial.print(" | Humd: ");
Serial.println(Humd);
}
// ========== SETUP ==========
void setup() {
pinMode(pinButton1, INPUT);
pinMode(pinButton2, INPUT);
Serial.begin(115200);
dht.begin();
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SMKN 39 JAKARTA");
lcd.setCursor(0, 1);
lcd.print("XI TAV 1");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("KAYLA AURA AGUSTIN");
lcd.setCursor(0, 1);
lcd.print("0075519291");
delay(2000);
lcd.clear();
}
// ========== LOOP ==========
void loop() {
button1 = digitalRead(pinButton1);
button2 = digitalRead(pinButton2);
// Tombol 1 = pindah menu
if (button1 == 1 && k1 == 0) k1 = 1;
if (button1 == 0 && k1 == 1) {
menu++;
if (menu > 1) menu = 0;
k1 = 0;
delay(100);
}
// Tombol 2 = pilih menu
if (button2 == 1 && k2 == 0) k2 = 1;
if (button2 == 0 && k2 == 1) {
masukMenu = menu + 1; // 1 untuk Temp, 2 untuk Humidity
k2 = 0;
delay(100);
}
// Tampilan menu utama
if (masukMenu == 0 && menu != lastMenu) {
lastMenu = menu;
lcd.clear();
if (menu == 0) {
lcd.setCursor(0, 0);
lcd.print("> Temperatur");
lcd.setCursor(0, 1);
lcd.print(" Humidity");
} else {
lcd.setCursor(0, 0);
lcd.print(" Temperatur");
lcd.setCursor(0, 1);
lcd.print("> Humidity");
}
}
// Tampilan menu Temperatur
if (masukMenu == 1) {
bacaDHT22();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temperature:");
lcd.setCursor(0, 1);
lcd.print(Temp); lcd.print("°C");
delay(2000);
masukMenu = 0;
lastMenu = -1;
lcd.clear();
}
// Tampilan menu Humidity
if (masukMenu == 2) {
bacaDHT22();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Humidity:");
lcd.setCursor(0, 1);
lcd.print(Humd); lcd.print(" %");
delay(2000);
masukMenu = 0;
lastMenu = -1;
lcd.clear();
}
}