// Define the pin numbers for the buttons
const int greenbutton = 2; // Green Button connected to pin 2
const int redbutton = 3; // Red Button connected to pin 3
// Define the pin numbers for the LEDs
const int greenLED = 4; // LED for Green Button connected to pin 4
const int redLED = 5; // LED for Red Button connected to pin 5
// Variables to hold the button states
volatile bool greenbuttonPressed = false;
volatile bool redbuttonPressed = false;
// Variables to track LED states
bool greenLEDState = false; // State of the Green LED (ON/OFF)
bool redLEDState = false; // State of the Red LED (ON/OFF)
void setup() {
// Start the Serial communication
Serial.begin(9600);
// Set the button pins as input
pinMode(greenbutton, INPUT_PULLUP);
pinMode(redbutton, INPUT_PULLUP);
// Set the LED pins as output
pinMode(greenLED, OUTPUT);
pinMode(redLED, OUTPUT);
// Turn off the LEDs initially
digitalWrite(greenLED, LOW); // LED for Green Button OFF
digitalWrite(redLED, LOW); // LED for Red Button OFF
// Attach interrupts to the button pins
attachInterrupt(digitalPinToInterrupt(greenbutton), greenbuttonISR, FALLING);
attachInterrupt(digitalPinToInterrupt(redbutton), redbuttonISR, FALLING);
}
void loop() {
// Check if Green button was pressed
if (greenbuttonPressed) {
greenbuttonPressed = false; // Reset the flag
greenLEDState = !greenLEDState; // Toggle the state of the Green LED
digitalWrite(greenLED, greenLEDState ? HIGH : LOW); // Set LED state
// If the Green LED is turned ON, turn OFF the Red LED
if (greenLEDState) {
redLEDState = false; // Update the state
digitalWrite(redLED, LOW); // Turn off Red LED
Serial.println("Green Button was pressed! LED ON");
} else {
Serial.println("Green Button was pressed again! LED OFF");
}
}
// Check if Red button was pressed
if (redbuttonPressed) {
redbuttonPressed = false; // Reset the flag
redLEDState = !redLEDState; // Toggle the state of the Red LED
digitalWrite(redLED, redLEDState ? HIGH : LOW); // Set LED state
// If the Red LED is turned ON, turn OFF the Green LED
if (redLEDState) {
greenLEDState = false; // Update the state
digitalWrite(greenLED, LOW); // Turn off Green LED
Serial.println("Red Button was pressed! LED ON");
} else {
Serial.println("Red Button was pressed again! LED OFF");
}
}
}
// Interrupt Service Routine for Green button
void greenbuttonISR() {
greenbuttonPressed = true; // Set the flag for the Green button
}
// Interrupt Service Routine for Red button
void redbuttonISR() {
redbuttonPressed = true; // Set the flag for the Red button
}