// Switch and LED Pins
const int redSwitch = 2;
const int greenSwitch = 3;
const int blueSwitch = 4;
const int DefaultSwitch = 8;
const int redLED = 5;
const int greenLED = 6;
const int blueLED = 7;
const int DefaultLED = 9;
// Timing variables for non-blocking blinking
unsigned long previousMillisRed = 0;
unsigned long previousMillisGreen = 0;
unsigned long previousMillisBlue = 0;
unsigned long previousMillisDeafult = 0;
const long interval = 200;
bool redState = LOW;
bool greenState = LOW;
bool blueState = LOW;
bool DefaultState = LOW;
void setup() {
// Initialize switches as inputs with pull-up resistors
pinMode(redSwitch, INPUT_PULLUP);
pinMode(greenSwitch, INPUT_PULLUP);
pinMode(blueSwitch, INPUT_PULLUP);
pinMode(DefaultSwitch, INPUT_PULLUP);
// Initialize LEDs as outputs
pinMode(redLED, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(blueLED, OUTPUT);
pinMode(DefaultLED, OUTPUT);
}
void loop() {
if (digitalRead(redSwitch) == LOW) {
blinkLED(redLED, previousMillisRed, redState);
} else {
digitalWrite(redLED, LOW);
}
if (digitalRead(greenSwitch) == LOW) {
blinkLED(greenLED, previousMillisGreen, greenState);
} else {
digitalWrite(greenLED, LOW);
}
if (digitalRead(blueSwitch) == LOW) {
blinkLED(blueLED, previousMillisBlue, blueState);
} else {
digitalWrite(blueLED, LOW);
}
if (digitalRead(DefaultSwitch) == LOW) {
blinkLED(DefaultLED, previousMillisBlue, DefaultState);
} else {
digitalWrite(DefaultLED, LOW);
}
}
// Non-blocking LED blinking function
void blinkLED(int ledPin, unsigned long &previousMillis, bool &state) {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
state = !state;
digitalWrite(ledPin, state);
}
}