const int InterruptPin = 2;
const int ButtonPin = 3;
const int BuzzerPin = 8;
const int InterruptLED = 10;
const int ButtonLED = 11;
volatile bool BuzzleState = false;
void setup()
{
Serial.begin(9600);
pinMode(InterruptPin, INPUT);
pinMode(ButtonPin, INPUT);
pinMode(BuzzerPin, OUTPUT);
pinMode(InterruptLED, OUTPUT);
pinMode(ButtonLED, OUTPUT);
Serial.println("System on Standby");
attachInterrupt(digitalPinToInterrupt(InterruptPin), InterruptHappen, RISING);
}
void loop()
{
delay(50);
if (BuzzleState == true && digitalRead(InterruptPin) == LOW)
{
tone(BuzzerPin, 1000);
Serial.println("Enter Interupt, Piezo Buzzer On");
digitalWrite(InterruptLED, HIGH);
digitalWrite(ButtonLED, LOW);
delay(1000);
}
else
{
if(digitalRead(ButtonPin) == LOW)
{
if (BuzzleState == false)
{
BuzzleState = true;
tone(BuzzerPin, 2000);
Serial.println("From Idle State, Piezo Button On");
digitalWrite(InterruptLED, LOW);
digitalWrite(ButtonLED, HIGH);
delay(1000);
}
else if (BuzzleState == true)
{
BuzzleState = false;
noTone(BuzzerPin);
Serial.println("Piezo Buzzer OFF, System on Standby");
digitalWrite(InterruptLED, LOW);
digitalWrite(ButtonLED, LOW);
delay(1000);
}
}
}
}
void InterruptHappen()
{
BuzzleState = true;
}