struct LEDType {
unsigned long LastMillis = 0;
unsigned long interval = 500;
boolean isOn = false;
int Pin;
};
const int NoOfLEDs = 2;
LEDType LED[NoOfLEDs];
void SetLED(int No, int State) {
LED[No].isOn = State;
digitalWrite(LED[No].Pin, LED[No].isOn);
}
void BlinkLedNo(int No) {
if (millis() - LED[No].LastMillis > LED[No].interval) {
LED[No].LastMillis = millis();
LED[No].isOn = !LED[No].isOn;
SetLED(No, LED[No].isOn);
}
}
void BlinkLeds() {
for (int i = 0; i < NoOfLEDs; i++ ) BlinkLedNo(i);
}
void setup() {
Serial.begin(115200);
// Just a quick initialization
for (int i = 0; i < NoOfLEDs; i++ ) {
LED[i].interval = 300 * (i + 1); // Interval for 0 -> 300 msec, for 1 -> 600 msec
LED[i].Pin = 9 + i; // Only valid for max. 5 Led, as 9 + 4 = 13 (Pin 13)
pinMode(LED[i].Pin, OUTPUT);
}
SetLED(0,LOW);
SetLED(1,LOW);
}
void loop() {
BlinkLeds();
}