Theupdated code below is the updated version solving all the problems but adding one new problem. It will not enter into the state of no LEDs on with if else statements and the button signal (RTS_IN == HIGH);other programming combined
const int RTS_IN = A0;
const int LED_5LTS_IN = 5;A1;
//break signal
const int LED_6BS_IN = 6;A2;
const int LED_7BS_OUT = 7;11;
//reverse signal
const int LED_8RS_IN = 8;
A3;
const int stateRS_OUT = 0;10;
unsignedconst longint tNR_OF_LEDS = 0;
4;
voidconst setup()int
RIGHTLEDS[NR_OF_LEDS] = {
6, Serial.begin(9600)7, 8, 9 };
const int
LEFTLEDS[NR_OF_LEDS] = pinMode(RTS_IN,{ INPUT);
5, 4, pinMode(LED_53, OUTPUT)2 };
const int pinMode(LED_6,interval OUTPUT);= 100;
int nrOfRightLedsOn pinMode(LED_7,= OUTPUT);0;
int nrOfLeftLedsOn pinMode(LED_8,= OUTPUT);
0;
}unsigned long t = 0;
void loopStateRight()
{;
void StateStateRightProcess();
}
void SwitchLedsOffStateLeft();
{void StateLeftProcess();
boolean oldSwitchStateRS digitalWrite(LED_5,= LOW);LOW;
boolean newSwitchStateRS digitalWrite(LED_6,= LOW);LOW;
boolean oldSwitchStateBS digitalWrite(LED_7,= LOW);LOW;
boolean newSwitchStateBS digitalWrite(LED_8,= LOW);LOW;
}
void Statesetup()
{
switch Serial.begin(state9600);
pinMode(RTS_IN, {INPUT);
pinMode(LTS_IN, INPUT);
case 0: //idle
for (int led = 0; ifled (digitalRead(RTS_IN)< ==NR_OF_LEDS; HIGHled++)
{
pinMode(RIGHTLEDS[led], OUTPUT);
}
t =for millis();
int led = 0; led < NR_OF_LEDS; led++)
{
//digitalWritepinMode(LED_5LEFTLEDS[led], HIGHOUTPUT);
state = 1;}
}
break;
void loop()
{
StateRight();
StateLeft();
newSwitchStateBS = digitalRead(BS_IN);
case 1: //Oneif(newSwitchStateBS LED!= OnoldSwitchStateBS)
{
if (digitalRead(RTS_IN)newSwitchStateBS == LOWHIGH)
{
SwitchLedsOffdigitalWrite(BS_OUT, HIGH);
}
else
state =digitalWrite(BS_OUT, 0;LOW);
oldSwitchStateBS = newSwitchStateBS;
}
elsenewSwitchStateRS if= (millisdigitalRead(RS_IN);
> tif(newSwitchStateRS +!= 300oldSwitchStateRS)
{
if(newSwitchStateRS == HIGH)
{
t = millisdigitalWrite(RS_OUT, HIGH);
}
else
digitalWrite(LED_5RS_OUT, HIGHLOW);
stateoldSwitchStateRS = 2;newSwitchStateRS;
}
break;
case 2: // Two LEDs On}
void StateRight()
{
if (digitalRead(RTS_IN) == LOW)
{
SwitchLedsOffSwitchRightLedsOff();
nrOfRightLedsOn = 0;
t = millis() + stateinterval;
= 0;}
else if (nrOfRightLedsOn < NR_OF_LEDS)
{
StateRightProcess();
}
else
{
else if (millis() >>= t + 300interval)
{
t = millis();
digitalWriteSwitchRightLedsOff(LED_6, HIGH);
statenrOfRightLedsOn = 3;0;
}
break;}
}
case 3: //Three LEDs On
ifvoid (digitalReadStateRightProcess(RTS_IN) == LOW)
{
SwitchLedsOff();
state = 0;
}
else if (millis() >>= t + 300interval)
{
t = millis();
digitalWrite(LED_7RIGHTLEDS[nrOfRightLedsOn], HIGH);
state = 4;nrOfRightLedsOn++;
}
}
void break;SwitchRightLedsOff()
{
for (int led = 0; led < NR_OF_LEDS; led++)
case 4: //Four LEDs On{
digitalWrite(RIGHTLEDS[led], LOW);
}
}
void StateLeft()
{
if (digitalRead(RTS_INLTS_IN) == LOW)
{
SwitchLedsOffSwitchLeftLedsOff();
statenrOfLeftLedsOn = 0;
t = millis() + interval;
}
else if (millis() > tnrOfLeftLedsOn +< 300NR_OF_LEDS)
{
t = millisStateLeftProcess();
digitalWrite(LED_8, HIGH);
state = 5;
}
break;
else
case 5: //No LEDs on{
if (digitalReadmillis(RTS_IN) == LOW)
>= t + interval)
{
t = SwitchLedsOffmillis();
SwitchLeftLedsOff;
statenrOfLeftLedsOn = 0;
}
}
}
void StateLeftProcess()
{
else if (millis() >>= t + 300interval)
{
t = millis();
digitalWrite(LEFTLEDS[nrOfLeftLedsOn], SwitchLedsOff;HIGH);
nrOfLeftLedsOn++;
state =}
}
void 1;SwitchLeftLedsOff()
{
for (int led = 0; led < NR_OF_LEDS; }led++)
{
digitalWrite(LEFTLEDS[led], break;LOW);
}
}
