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();
}