unsigned long startMillis1;
unsigned long startMillis2;
unsigned long startMillis3;
const unsigned long period1 = 500;
const unsigned long period2 = 1000;
const unsigned long period3 = 330;
int LEDPIN1 = 13;
int LEDPIN2 = 12;
int LEDPIN3 = 8;
void setup()
{
Serial.begin(115200); // Start Serial for debugging info
pinMode(LEDPIN1, OUTPUT);
pinMode(LEDPIN2, OUTPUT);
pinMode(LEDPIN3, OUTPUT);
startMillis1 = millis(); // Initial start time for LED 1
startMillis2 = millis(); // Initial start time for LED 2
startMillis3 = millis(); // Initial start time for LED 3
}
void checkTime(unsigned long &Millis, unsigned long period, int LEDPIN)
{
unsigned long currentMillis = millis(); // Get the current "time"
if (currentMillis - Millis >= period)
{
digitalWrite(LEDPIN, !digitalRead(LEDPIN));
Millis = currentMillis;
}
}
void loop()
{
checkTime(startMillis1, period1, LEDPIN1);
checkTime(startMillis2, period2, LEDPIN2);
checkTime(startMillis3, period3, LEDPIN3);
}
//https://forum.arduino.cc/t/using-millis-for-timing-a-beginners-guide/483573/2