const int RTS_IN = A0;
const int NR_OF_LEDS = 4;
const int LEDS[NR_OF_LEDS] = { 5, 6, 7, 8 };
const int DURATION = 300;
int _nrOfLedsOn = 0;
unsigned long _time = 0;
void SwitchLedsOffProcessState();
void ProcessStateProcessLedsState();
void SwitchLedsOff();
void setup()
{
Serial.begin(9600);
pinMode(RTS_IN, INPUT);
for (int led = 0; led < NR_OF_LEDS; led++)
{
pinMode(LEDS[led], OUTPUT);
}
}
void loop()
{
ProcessState();
}
void ProcessState()
{
if (digitalRead(RTS_IN) == LOW)
{
SwitchLedsOff();
_nrOfLedsOn = 0;
_time = millis() + DURATION + 1;
}
else if (_nrOfLedsOn < NR_OF_LEDS)
{
ProcessLedsState();
}
else
{
if (millis() > _time + DURATION)
{
_time = millis();
SwitchLedsOff();
_nrOfLedsOn = 0;
}
}
}
void ProcessLedsState()
{
if (millis() > _time + DURATION)
{
_time = millis();
digitalWrite(LEDS[_nrOfLedsOn], HIGH);
_nrOfLedsOn++;
}
}
void SwitchLedsOff()
{
for (int led = 0; led < NR_OF_LEDS; led++)
{
digitalWrite(LEDS[led], LOW);
}
}