const int buttonPin = 7; // Pin tombol dihubungkan ke pin 2
const int ledPin = 13; // Pin LED dihubungkan ke pin 13 (atau pin lain)
int ledState = LOW; // Menyimpan status LED saat ini
int buttonState; // Menyimpan pembacaan tombol saat ini
int lastButtonState = LOW; // Menyimpan pembacaan tombol sebelumnya
unsigned long lastDebounceTime = 0; // Waktu terakhir tombol ditekan
unsigned long debounceDelay = 50; // Waktu tunda untuk mencegah getaran tombol (debounce)
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
// Membaca status tombol
int reading = digitalRead(buttonPin);
// Jika tombol berubah (karena ditekan/dilepas), reset timer debounce
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
// Cek apakah sudah cukup waktu untuk memastikan perubahan tombol bukan error/getaran
if ((millis() - lastDebounceTime) > debounceDelay) {
// Jika status tombol berubah:
if (reading != buttonState) {
buttonState = reading;
// Hanya ubah status LED jika tombol ditekan ke HIGH
if (buttonState == HIGH) {
ledState = !ledState; // Membalik status LED (dari nyala ke mati, atau sebaliknya)
}
}
}
// Terapkan status ke LED
digitalWrite(ledPin, ledState);
// Simpan pembacaan tombol untuk perulangan berikutnya
lastButtonState = reading;
}