//NAMA: Joy Disanto Nupa
//NIM: 2209106014
#define timeSeconds 10
#define debounceDelay 200
const int led1 = 12;
const int led2 = 13;
const int button1 = 1;
const int button2 = 2;
unsigned long now = 0;
unsigned long lastTrigger1 = 0;
unsigned long lastTrigger2 = 0;
boolean startTimer1 = false;
boolean startTimer2 = false;
volatile unsigned long lastDebounceTime1 = 0;
volatile unsigned long lastDebounceTime2 = 0;
void IRAM_ATTR handleButton1() {
unsigned long currentTime = millis();
if (currentTime - lastDebounceTime1 > debounceDelay) {
digitalWrite(led1, HIGH);
startTimer1 = true;
lastTrigger1 = currentTime;
lastDebounceTime1 = currentTime;
}
}
void IRAM_ATTR handleButton2() {
unsigned long currentTime = millis();
if (currentTime - lastDebounceTime2 > debounceDelay) {
digitalWrite(led2, HIGH);
startTimer2 = true;
lastTrigger2 = currentTime;
lastDebounceTime2 = currentTime;
}
}
void setup() {
Serial.begin(115200);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(button1), handleButton1, FALLING);
attachInterrupt(digitalPinToInterrupt(button2), handleButton2, FALLING);
}
void loop() {
now = millis();
if (startTimer1 && (now - lastTrigger1 > timeSeconds * 35)) {
Serial.println("Timer LED1 selesai");
digitalWrite(led1, LOW);
startTimer1 = false;
}
if (startTimer2 && (now - lastTrigger2 > timeSeconds * 35)) {
Serial.println("Timer LED2 selesai");
digitalWrite(led2, LOW);
startTimer2 = false;
}
}