#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int tombolPasien1 = 2; // pasien 1
const int tombolPasien2 = 3; // pasien 2
const int tombolPerawat1 = 4; // tombol perawat untuk merespon pasien 1
const int tombolPerawat2 = 5; // tombol perawat untuk merespon pasien 2
const int ledPasien1 = 6; // LED indikator pasien 1
const int ledPasien2 = 7; // LED indikator pasien 2
const int buzzer = 8; // Buzzer
int bantuanPasien1 = 0;
int bantuanPasien2 = 0;
bool statusBuzzer = false;
bool responPasien1 = false;
bool responPasien2 = false;
void setup() {
pinMode(tombolPasien1, INPUT_PULLUP);
pinMode(tombolPasien2, INPUT_PULLUP);
pinMode(tombolPerawat1, INPUT_PULLUP);
pinMode(tombolPerawat2, INPUT_PULLUP);
pinMode(ledPasien1, OUTPUT);
pinMode(ledPasien2, OUTPUT);
pinMode(buzzer, OUTPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Sistem Bantuan");
delay(2000);
lcd.clear();
}
void loop() {
// Cek tombol pasien 1
if (digitalRead(tombolPasien1) == LOW) {
bantuanPasien1++;
responPasien1 = false;
digitalWrite(ledPasien1, HIGH);
statusBuzzer = true;
updateLCD();
delay(200);
}
// Cek tombol pasien 2
if (digitalRead(tombolPasien2) == LOW) {
bantuanPasien2++;
responPasien2 = false;
digitalWrite(ledPasien2, HIGH);
statusBuzzer = true;
updateLCD();
delay(200);
}
// Cek tombol perawat untuk respon pasien 1
if (digitalRead(tombolPerawat1) == LOW) {
responPasien1 = true;
digitalWrite(ledPasien1, LOW);
updateLCD();
delay(200); // Debounce
}
// Cek tombol perawat untuk respon pasien 2
if (digitalRead(tombolPerawat2) == LOW) {
responPasien2 = true;
digitalWrite(ledPasien2, LOW);
updateLCD();
delay(200); // Debounce
}
// Buzzer
if (statusBuzzer && (!responPasien1 || !responPasien2)) {
tone(buzzer, 1000);
} else {
noTone(buzzer);
statusBuzzer = false;
}
}
void updateLCD() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("P1m.bantuan:");
lcd.print(bantuanPasien1);
if (responPasien1) {
lcd.print("ok");
}
lcd.setCursor(0, 1);
lcd.print("P2m.bantuan:");
lcd.print(bantuanPasien2);
if (responPasien2) {
lcd.print("ok");
}
}