const int redLedPin = 13; // Red LED connected to digital pin 13
const int blueLedPin = 12; // Red LED connected to digital pin 12
const int greenLedPin = 11; // Red LED connected to digital pin 12
const int buttonPin = 2; // Button connected to digital pin 2
volatile bool buttonPressed = false;
void setup() {
pinMode(redLedPin, OUTPUT);
pinMode(blueLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
pinMode(buttonPin2, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(buttonPin), buttonISR, FALLING);
attachInterrupt(digitalPinToInterrupt(buttonPin2), buttonISR, FALLING);
}
void loop() {
// Run the blinking function as long as the button is not pressed
while (!buttonPressed) {
blinkRedLED();
}
// If button is pressed, perform interrupt function and reset flag
if (buttonPressed) {
interruptFunction();
buttonPressed = false;
}
}
void buttonISR() {
// Interrupt Service Routine (ISR) for the button press
buttonPressed = true;
}
void blinkRedLED() {
digitalWrite(greenLedPin, HIGH);
delay(5000);
if (buttonPressed) {
digitalWrite(greenLedPin, LOW);
interruptFunction();
buttonPressed = false;
}
digitalWrite(greenLedPin, LOW);
delay(5000);
if (buttonPressed) {
interruptFunction();
buttonPressed = false;
}
digitalWrite(redLedPin, HIGH);
delay(5000);
if (buttonPressed) {
digitalWrite(redLedPin, LOW);
interruptFunction();
buttonPressed = false;
}
digitalWrite(redLedPin, LOW);
delay(5000);
if (buttonPressed) {
interruptFunction();
buttonPressed = false;
}
}
void interruptFunction() {
// Your interrupt function code goes here
// This function will be called when the button is pressed
digitalWrite(blueLedPin, HIGH);
delay(5000);
digitalWrite(blueLedPin, LOW);
delay(5000);
}