// 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 (RISING = tepi naik)
attachInterrupt(digitalPinToInterrupt(buttonPin), toggleLED, RISING);
// Memulai komunikasi serial (opsional)
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); // Nyalakan LED
delay(500); // Tunda 500ms
digitalWrite(ledPin, LOW); // Matikan LED
delay(500);
} else {
digitalWrite(ledPin, LOW); // Pastikan LED mati
}
}