#define LED1 2 // Red
#define LED2 3 // Green
#define LED3 4 // Blue
unsigned long led1Millis, led2Millis, led3Millis;
int led1Status = LOW, led2Status = LOW, led3Status = LOW;
void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
led1Millis = millis();
led2Millis = millis();
led3Millis = millis();
}
void loop() {
if(GetTick() >= led1Millis) {
if(led1Status == HIGH) {
LED(LED1, LOW);
led1Status = LOW;
}
else {
LED(LED1, HIGH);
led1Status = HIGH;
}
led1Millis = GetTick() + 1000;
}
if(GetTick() >= led2Millis) {
if(led2Status == HIGH) {
LED(LED2, LOW);
led2Status = LOW;
}
else {
LED(LED2, HIGH);
led2Status = HIGH;
}
led2Millis = GetTick() + 2000;
}
if(GetTick() >= led3Millis) {
if(led3Status == HIGH) {
LED(LED3, LOW);
led3Status = LOW;
}
else {
LED(LED3, HIGH);
led3Status = HIGH;
}
led3Millis = GetTick() + 500;
}
}
void LED(int number, int status) {
digitalWrite(number, status);
}
unsigned long GetTick() {
return millis();
}