const int buttonPin = 2; // Pin yang terhubung ke tombol
const int ledPin = 13; // Pin yang terhubung ke LED
int buttonState = HIGH; // Status tombol saat ini
int lastButtonState = HIGH; // Status tombol pada pembacaan sebelumnya
unsigned long lastDebounceTime = 0; // Waktu terakhir perubahan status tombol
unsigned long debounceDelay = 50; // Waktu penundaan untuk menghindari bouncing
bool ledOn = false; // Status LED
void setup() {
Serial.begin(115200);
pinMode(buttonPin, INPUT_PULLUP); // Mengaktifkan resistansi pull-up internal pada tombol
pinMode(ledPin, OUTPUT);
}
void loop() {
// Membaca status tombol
int reading = digitalRead(buttonPin);
// Mengecek apakah terjadi perubahan status tombol
if (reading != lastButtonState) {
// Memperbarui waktu terakhir perubahan status tombol
lastDebounceTime = millis();
}
// Mengecek apakah telah berlalu waktu penundaan
if ((millis() - lastDebounceTime) > debounceDelay) {
// Memeriksa apakah tombol ditekan
if (reading == LOW && buttonState == HIGH) {
Serial.println("Tombol ditekan!");
ledOn = !ledOn; // Membalik status LED
digitalWrite(ledPin, ledOn ? HIGH : LOW); // Menghidupkan atau mematikan LED
}
}
// Memperbarui status tombol pada pembacaan berikutnya
lastButtonState = reading;
}