#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const int led1Pin = 3; // Pin untuk LED 1
const int led2Pin = 4; // Pin untuk LED 2
const int buttonPin = 2; // Pin untuk tombol
unsigned long previousMillisAlarm = 0; // Waktu sebelumnya Alarm
unsigned long previousMillisNotifikasi = 0; // Waktu sebelumnya Notifikasi
const long AlarmDuration = 30000; // Durasi LED 1 aktif (30 detik)
const long NotifikasiInterval = 5000; // Interval Notifikasi (5 detik)
const long NotifikasiDuration = 1000; // Durasi Notifikasi (1 detik)
bool AlarmActive = false; // Status Alarm
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD
void setup() {
Serial.begin(9600);
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
lcd.init();
lcd.clear();
lcd.backlight();
}
void loop() {
if (Serial.available() > 0) {
String input = Serial.readStringUntil('\n');
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(input);
Serial.println(input);
if (input == "aktif") {
digitalWrite(led1Pin, HIGH);
AlarmActive = true;
previousMillisAlarm = millis();
}
}
if (AlarmActive) {
unsigned long currentMillisAlarm = millis(); // Wktu Alarm saat ini
if (currentMillisAlarm - previousMillisAlarm >= AlarmDuration) {
digitalWrite(led1Pin, LOW);
AlarmActive = false;
}
unsigned long currentMillisNotifikasi = millis(); //Waktu notif saat ini
if (currentMillisNotifikasi - previousMillisNotifikasi >= NotifikasiInterval) {
previousMillisNotifikasi = currentMillisNotifikasi;
digitalWrite(led2Pin, HIGH);
if (digitalRead(led2Pin == 1)){
Serial.println("led 2 aktif");}
delay(NotifikasiDuration);
digitalWrite(led2Pin, LOW);
}
}
if (digitalRead(buttonPin) == LOW) {
// Tombol ditekan, matikan kedua LED
digitalWrite(led1Pin, LOW);
//digitalWrite(led2Pin, LOW);
AlarmActive = false;
}
delay(10);
}