#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define RELAY_PIN D4 // Relay terhubung ke pin D4 (GPIO 2)
#define BUTTON1_PIN D5 // Tombol 1 untuk menghidupkan relay (GPIO 14)
#define BUTTON2_PIN D6 // Tombol 2 untuk mematikan relay (GPIO 12)
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD (ubah jika berbeda)
void setup() {
pinMode(RELAY_PIN, OUTPUT); // Mengatur pin relay sebagai output
pinMode(BUTTON1_PIN, INPUT_PULLUP); // Mengatur tombol 1 sebagai input dengan pull-up internal
pinMode(BUTTON2_PIN, INPUT_PULLUP); // Mengatur tombol 2 sebagai input dengan pull-up internal
lcd.begin(16, 2); // Inisialisasi LCD dengan ukuran 16x2
lcd.print("Relay Control"); // Menampilkan teks awal
delay(1000);
lcd.clear();
digitalWrite(RELAY_PIN, LOW); // Mematikan relay di awal
updateLCDStatus(false);
}
void loop() {
// Cek tombol 1 untuk menyalakan relay
if (digitalRead(BUTTON1_PIN) == LOW) {
digitalWrite(RELAY_PIN, HIGH); // Menyalakan relay
updateLCDStatus(true); // Mengupdate status di LCD
delay(200); // Debounce delay
}
// Cek tombol 2 untuk mematikan relay
if (digitalRead(BUTTON2_PIN) == LOW) {
digitalWrite(RELAY_PIN, LOW); // Mematikan relay
updateLCDStatus(false); // Mengupdate status di LCD
delay(200); // Debounce delay
}
}
void updateLCDStatus(bool isRelayOn) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Relay Status:");
lcd.setCursor(0, 1);
if (isRelayOn) {
lcd.print("ON");
} else {
lcd.print("OFF");
}
}