const int pb = 4; // Tombol push button
const int ledRed = 12; // LED merah
const int ledGren = 13; // LED hijau
bool buttonState = false; // Untuk melacak status tombol (ditekan atau tidak)
bool lastButtonState = false; // Untuk melacak status tombol pada loop sebelumnya
bool isRedOn = true; // Status LED, jika true maka LED merah menyala, jika false maka LED hijau menyala
unsigned long lastDebounceTime = 0; // Waktu terakhir perubahan tombol
unsigned long debounceDelay = 50; // Delay untuk debouncing (50 ms)
void setup() {
pinMode(pb, INPUT);
pinMode(ledRed, OUTPUT);
pinMode(ledGren, OUTPUT);
digitalWrite(ledRed, HIGH); // Nyalakan LED merah saat awal
digitalWrite(ledGren, LOW); // Pastikan LED hijau mati saat awal
}
void loop() {
bool reading = digitalRead(pb); // Membaca status tombol saat ini
// Jika status tombol berubah (dari LOW ke HIGH atau sebaliknya), reset waktu debounce
if (reading != lastButtonState) {
lastDebounceTime = millis(); // Catat waktu perubahan
}
// Jika sudah melewati debounce delay, anggap perubahan tombol valid
if ((millis() - lastDebounceTime) > debounceDelay) {
// Jika status tombol benar-benar berubah
if (reading != buttonState) {
buttonState = reading;
// Hanya jika tombol ditekan (HIGH), tukar status LED
if (buttonState == HIGH) {
isRedOn = !isRedOn; // Tukar status LED
if (isRedOn) {
digitalWrite(ledRed, HIGH);
digitalWrite(ledGren, LOW);
} else {
digitalWrite(ledRed, LOW);
digitalWrite(ledGren, HIGH);
}
}
}
}
// Simpan status tombol untuk digunakan pada loop berikutnya
lastButtonState = reading;
}