/*
Nama : Muhammad Faris Susanto
No : 23
Kelas : XII-4
Jadi untuk keseluruhan fungsinya sama pak..
hanya saja saya sedikit modifilkasi saja.
*/
// Deklarasi Library
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
// PIN LED
int ledKamar_1 = 7;
int ledKamar_2 = 6;
int ledKamar_3 = 5;
int ledWarn = 4;
// PIN BUTTON
int btnKamar_1 = 12;
int btnKamar_2 = 11;
int btnKamar_3 = 10;
// Variabel untuk menyimpan status tombol
int btnstate1 = 0;
int btnstate2 = 0;
int btnstate3 = 0;
void setup() {
lcd.init();
lcd.backlight();
// Set PINMODE
pinMode(ledKamar_1, OUTPUT);
pinMode(ledKamar_2, OUTPUT);
pinMode(ledKamar_3, OUTPUT);
pinMode(ledWarn, OUTPUT);
pinMode(btnKamar_1, INPUT);
pinMode(btnKamar_2, INPUT);
pinMode(btnKamar_3, INPUT);
}
// Fungsi untuk mengatur letak teks
void tampilkanPesanTengah(String kamar, String pesan) {
lcd.clear();
int posisiKamar = (16 - kamar.length()) / 2;
int posisiPesan = (16 - pesan.length()) / 2;
lcd.setCursor(posisiKamar, 0);
lcd.print(kamar);
delay(500);
lcd.clear();
lcd.setCursor(posisiPesan, 1);
lcd.print(pesan);
delay(500);
lcd.clear();
}
// Fungsi untuk mengedipkan LED darurat
void kedipkanLedDarurat() {
for (int i = 0; i < 5; i++) {
digitalWrite(ledWarn, HIGH);
delay(100);
digitalWrite(ledWarn, LOW);
delay(100);
}
}
// Fungsi untuk menampilkan standby text
void standbyText() {
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("STAND BY");
// Running text pada baris kedua
String pesan = "TIDAK ADA DARURAT ";
for (int posisi = 0; posisi < pesan.length(); posisi++) {
if (digitalRead(btnKamar_1) == HIGH || digitalRead(btnKamar_2) == HIGH || digitalRead(btnKamar_3) == HIGH) {
lcd.clear();
return;
}
lcd.setCursor(0, 1);
lcd.print(pesan.substring(posisi) + pesan.substring(0, posisi));
delay(300);
}
}
// Fungsi loop
void loop() {
// Membaca status tombol
btnstate1 = digitalRead(btnKamar_1);
btnstate2 = digitalRead(btnKamar_2);
btnstate3 = digitalRead(btnKamar_3);
// Kondisi untuk Tiap Kamar
if (btnstate1 == HIGH) {
digitalWrite(ledKamar_1, HIGH);
tampilkanPesanTengah("== KAMAR 1 ==", "!= DARURAT =!");
kedipkanLedDarurat();
digitalWrite(ledKamar_1, LOW);
} else if (btnstate2 == HIGH) {
digitalWrite(ledKamar_2, HIGH);
tampilkanPesanTengah("== KAMAR 2 ==", "!= DARURAT =!");
kedipkanLedDarurat();
digitalWrite(ledKamar_2, LOW);
} else if (btnstate3 == HIGH) {
digitalWrite(ledKamar_3, HIGH);
tampilkanPesanTengah("== KAMAR 3 ==", "!= DARURAT =!");
kedipkanLedDarurat();
digitalWrite(ledKamar_3, LOW);
} else {
standbyText();
}
}