// Deklarasi pin
const int ledPin = 13; // Pin LED terhubung
const int buttonPin = 2; // Pin push button terhubung (sumber interupsi)
// Variabel untuk menyimpan status LED
volatile bool ledState = false;
// Fungsi ISR (Interrupt Service Routine)
void toggleLED() {
ledState = !ledState; // Ubah status LED
}
void setup() {
// Konfigurasi pin
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // Menggunakan internal pull-up resistor
// Menambahkan interrupt pada pin 2 (tepi turun = tombol ditekan)
attachInterrupt(digitalPinToInterrupt(buttonPin), toggleLED, FALLING);
// Memulai komunikasi serial
Serial.begin(9600);
Serial.println("Program Maskable Interrupt: LED berkedip saat tombol ditekan");
}
void loop() {
// Mengontrol LED berdasarkan status yang diubah oleh ISR
if (ledState) {
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
} else {
digitalWrite(ledPin, LOW); // Pastikan LED mati
}
}