/*
Sketch: sketch.ino
Created: 25-Feb-2023
Author: MicroBeaut
GitHub: https://github.com/MicroBeaut/
Youtube: https://www.youtube.com/channel/UCAztmS6ogRMH5spdH0bSmEg
*/
/*
Solution For:
Arduino Forum
Topics: Multi Button Programming
Category: Programming Questions
Link: https://forum.arduino.cc/t/multi-button-programming/1094488
*/
#define B1 A2 // Button
#define B2 A1 // Button
#define B3 A0 // Button
#define R1 12 // Output relay
#define R2 11 // Output relay
#define R3 10 // Output relay
#define R4 9 // Output relay
#define commonStatusPin R4 // Common Status Pin
const uint8_t numberOfGroup = 3; // Number Of Group Switch and Relay
const uint8_t buttonPins[] = {B1, B2, B3}; // An array of button pins
const uint8_t relayPins[] = {R1, R2, R3}; // An array of relay pins
bool isActive = false; // The status for one of the buttons is activated.
void setup() {
for (uint8_t index = 0; index < numberOfGroup; index ++) {
pinMode(buttonPins[index], INPUT_PULLUP);
pinMode(relayPins[index], OUTPUT);
}
pinMode(commonStatusPin, OUTPUT);
}
void loop() {
isActive = false; // Reset
for (uint8_t index = 0; index < numberOfGroup; index ++) {
bool value = !digitalRead(buttonPins[index]);
digitalWrite(relayPins[index], value & !isActive);
isActive |= value; // Check if any one of the buttons is activated
}
digitalWrite(commonStatusPin, !isActive);
}