Hello, I am making a state machine in Arduino right now. One of the functions I have currently runs based on number of cycles with a for loop. I want it to run based on time (i.e. instead of running for 300 cycles, run for 30 seconds). I can't seem to get Millis to work. Please help. The specific function is below.
void runStopLongFast ()
{
enum class simSettings : uint8_t
{
IDLE,
MANUAL,
CONTINUOUS,
RUNSTOP,
};
static simSettings currMode = simSettings :: RUNSTOP;
for(int i = 0; i<300; I++)
{
if (digitalRead(manualSwitchA) == HIGH && digitalRead(manualSwitchB) == LOW)
{
if (digitalRead(speedSwitch) == LOW && digitalRead(intervalSwitch) == LOW)
{
fastCycle();
Serial.println("In Run-StopLongFast-Cycle");
}
else
{
currMode = simSettings :: RUNSTOP;
}
}
else if (digitalRead(manualSwitchA) == HIGH && digitalRead(manualSwitchB) == HIGH)
{
currMode = simSettings :: MANUAL;
}
else if (digitalRead(manualSwitchA) == LOW && digitalRead(manualSwitchB) == HIGH)
{
currMode = simSettings :: CONTINUOUS;
}
}
for(int i = 0; i<600; I++)
{
if (digitalRead(manualSwitchA) == HIGH && digitalRead(manualSwitchB) == LOW)
{
if (digitalRead(speedSwitch) == LOW && digitalRead(intervalSwitch) == LOW)
{
digitalWrite(cycleOutput, LOW);
delay(50);
Serial.println("In Run-StopLongFast-IDLE");
}
else
{
currMode = simSettings :: RUNSTOP;
}
}
else if (digitalRead(manualSwitchA) == HIGH && digitalRead(manualSwitchB) == HIGH)
{
currMode = simSettings :: MANUAL;
}
else if (digitalRead(manualSwitchA) == LOW && digitalRead(manualSwitchB) == HIGH)
{
currMode = simSettings :: CONTINUOUS;
}
}
for(int i = 0; i<1; I++)
{
if (digitalRead(manualSwitchA) == HIGH && digitalRead(manualSwitchB) == LOW)
{
if (digitalRead(ad1Switch) == LOW)
{
digitalWrite(cycleOutput, HIGH);
delay(50);
Serial.println("AD1");
}
else
{
currMode = simSettings :: RUNSTOP;
}
}
else if (digitalRead(manualSwitchA) == HIGH && digitalRead(manualSwitchB) == HIGH)
{
currMode = simSettings :: MANUAL;
}
else if (digitalRead(manualSwitchA) == LOW && digitalRead(manualSwitchB) == HIGH)
{
currMode = simSettings :: CONTINUOUS;
}
}
for(int i = 0; i<600; I++)
{
if (digitalRead(manualSwitchA) == HIGH && digitalRead(manualSwitchB) == LOW)
{
if (digitalRead(ad1Switch) == LOW)
{
digitalWrite(autoDowntime1, HIGH);
delay(50);
Serial.println("AD1");
}
else
{
currMode = simSettings :: RUNSTOP;
}
}
else if (digitalRead(manualSwitchA) == HIGH && digitalRead(manualSwitchB) == HIGH)
{
currMode = simSettings :: MANUAL;
}
else if (digitalRead(manualSwitchA) == LOW && digitalRead(manualSwitchB) == HIGH)
{
currMode = simSettings :: CONTINUOUS;
}
}
}