enum State {start, wait, run, stop};
void fsmLoop() {
static State state = start;
switch (state) {
case start:
Serial.println("Press button A to start.");
state = wait;
break;
case wait:
if (digitalRead(2) == LOW) {
Serial.println("Entering run state, press B to restart, press C to stop.");
state = run;
}
break;
case run:
if (digitalRead(3) == LOW) {
Serial.println("Restarting.");
state = start;
}
if (digitalRead(4) == LOW) {
Serial.println("Entering stop state.");
state = stop;
}
break;
case stop:
break;
}
}
void setup() {
Serial.begin(9600);
for (size_t i = 2; i <= 4; i++) {
pinMode(i, INPUT_PULLUP);
}
}
void loop() {
fsmLoop();
}