//pin change interrupt - purwarupa3d

#include <avr/sleep.h>

#define LED1 13
#define LED2 8
#define BUTTON1 5
#define BUTTON2 9

volatile bool buttonPressed = false;  // Variabel volatile untuk menandai interrupt

// ISR untuk pin change interrupt pada PCINT2
ISR(PCINT2_vect) {
  if (digitalRead(BUTTON1) == LOW) {
    buttonPressed = true;
  }
}

void setup() {
  pinMode(LED1, OUTPUT);   // Mengatur LED1 sebagai output
  pinMode(LED2, OUTPUT);   // Mengatur LED2 sebagai output
  pinMode(BUTTON1, INPUT);  // Mengatur tombol 1 sebagai input 
  pinMode(BUTTON2, INPUT);  // Mengatur tombol 2 sebagai input 

  // Mengaktifkan pin change interrupt pada pin BUTTON
  // pin change interrupt (example for D5)
  PCMSK2 |= bit (PCINT21);  // want pin 5
  PCIFR  |= bit (PCIF2);   // clear any outstanding interrupts
  PCICR  |= bit (PCIE2);   // enable pin change interrupts for D0 to D7
  //sei();  // Mengaktifkan interrupt global
}

void loop() {
  if (!buttonPressed) {
    // Blinking LED1 jika tombol tidak ditekan
    digitalWrite(LED2, LOW);
    digitalWrite(LED1, HIGH);
    delay(500);
    digitalWrite(LED1, LOW);
    delay(500);
  } else {
    // Menyalakan LED2 dan mematikan LED1 jika tombol ditekan
    digitalWrite(LED1, LOW);
    digitalWrite(LED2, HIGH);
  }

  if (digitalRead(BUTTON2) == LOW) {
    buttonPressed = false;
  }
}