I'm new to programming and using Arduino products, and was wondering if someone wouldn't mind assisting me with a project I'm trying to tackle?
If you review my code below, I have 3 conditions within my "idle" case, and the program is constantly looking for any of those 3 conditions. If the first condition is met, then case 1 is called; if the second condition is met, then case 2 is called; if the third condition is met, then case 3 is called. All 3 cases return to the "idle" case once done running.
What I would like to do is find some way to insert the "warning" case if any of the conditions are met, BEFORE going to case 1, case 2 or case 3, without writing the functions of the "warning" case over each time for each of the other 3 cases. Essentially, the flow would be like this:
condition 1 --> warning --> case 1 --> case idle;
condition 2 --> warning --> case 2 --> case idle;
condition 3 --> warning --> case 3 --> case idle:
void loop() {
static byte theState = idle;
switch (theState)
{
case idle:
if (voltageA0 > 1.0) {
theState = case1;
}
if (voltageA1 < 2.0) {
theState = case2;
}
if (voltageA2 > 3.5) {
theState = case3;
}
break;
case warning:
digitalWrite(7, HIGH);
delay(5000);
digitalWrite(7, LOW);
delay(0);
break;
case 1:
digitalWrite(8, HIGH);
delay(2000);
digitalWrite(8, LOW);
delay(0);
theState = idle;
break;
case 2:
digitalWrite(9, HIGH);
delay(2000);
digitalWrite(9, LOW);
delay(0);
theState = idle;
break;
case 3:
digitalWrite(10, HIGH);
delay(2000);
digitalWrite(10, LOW);
delay(0);
theState = idle;
break;
}
}
Also, if there is a more efficient way to do this, code-wise, I'm all ears!