//nama: Joy Disanto Nupa
//NIM: 2209106014
//Soal-1-mikro
// Deklarasi pin
const int buttonOnPin = 13; // Pin untuk tombol ON
const int buttonOffPin = 7; // Pin untuk tombol OFF
const int ledPin = 4; // Pin untuk LED
// Variabel untuk menyimpan status tombol
int buttonOnState = 0; // Status tombol ON saat ini
int buttonOffState = 0; // Status tombol OFF saat ini
int lastButtonOnState = HIGH; // Status sebelumnya dari tombol ON
int lastButtonOffState = HIGH; // Status sebelumnya dari tombol OFF
bool ledState = false; // Status LED (false = mati, true = nyala)
// Variabel untuk debouncing (anti bouncing tombol)
unsigned long lastDebounceTime = 0; // Waktu terakhir tombol berubah
unsigned long debounceDelay = 50; // Delay debounce 50 milidetik
void setup() {
// Konfigurasi pin tombol sebagai input dengan pull-up internal
pinMode(buttonOnPin, INPUT_PULLUP); // Tombol ON default HIGH, LOW saat ditekan
pinMode(buttonOffPin, INPUT_PULLUP); // Tombol OFF default HIGH, LOW saat ditekan
// Konfigurasi pin LED sebagai output
pinMode(ledPin, OUTPUT);
}
void loop() {
// Baca status saat ini dari tombol ON dan OFF
int readingOn = digitalRead(buttonOnPin);
int readingOff = digitalRead(buttonOffPin);
// ===== Logika untuk tombol ON =====
// Cek apakah terjadi perubahan pada tombol ON
if (readingOn != lastButtonOnState) {
lastDebounceTime = millis(); // Simpan waktu saat terjadi perubahan
}
// Jika sudah melewati waktu debounce
if ((millis() - lastDebounceTime) > debounceDelay) {
// Jika status tombol ON benar-benar berubah
if (readingOn != buttonOnState) {
buttonOnState = readingOn;
// Jika tombol ON ditekan (LOW)
if (buttonOnState == LOW) {
ledState = true; // Nyalakan status LED
digitalWrite(ledPin, HIGH); // Nyalakan LED secara fisik
}
}
}
// ===== Logika untuk tombol OFF =====
// Cek apakah terjadi perubahan pada tombol OFF
if (readingOff != lastButtonOffState) {
lastDebounceTime = millis(); // Simpan waktu saat terjadi perubahan
}
// Jika sudah melewati waktu debounce
if ((millis() - lastDebounceTime) > debounceDelay) {
// Jika status tombol OFF benar-benar berubah
if (readingOff != buttonOffState) {
buttonOffState = readingOff;
// Jika tombol OFF ditekan (LOW)
if (buttonOffState == LOW) {
ledState = false; // Matikan status LED
digitalWrite(ledPin, LOW); // Matikan LED secara fisik
}
}
}
// Simpan status terakhir tombol untuk dibandingkan pada loop berikutnya
lastButtonOnState = readingOn;
lastButtonOffState = readingOff;
}