// Beispielcode Statemachine von Karl Engelbogen
// Konstanten für Tasten-Pins
#define TASTE_START 3
#define TASTE_STOP 4
#define TASTE_RESET 5
// Konstanten für Statemachine
#define RESET 0
#define START 1
#define MESSEN 2
#define STOP 3
// Globale Variable für die States
int state = RESET; // Statemachine beginnt mit State RESET
void setup() {
Serial.begin(9600);
pinMode(TASTE_START, INPUT_PULLUP);
pinMode(TASTE_STOP, INPUT_PULLUP);
pinMode(TASTE_RESET, INPUT_PULLUP);
}
void loop() {
switch (state) {
case RESET:
Serial.println("State Reset");
if (digitalRead(TASTE_START) == LOW) {
state = START;
}
break;
case START:
Serial.println("State Start wird ausgefuehrt");
state = MESSEN;
break;
case MESSEN:
Serial.println("State Messung laeuft");
if (digitalRead(TASTE_STOP) == LOW) {
state = STOP;
}
if (digitalRead(TASTE_RESET) == LOW) {
state = RESET;
}
break;
case STOP:
Serial.println("State Stop - Messung wurde gestoppt");
if (digitalRead(TASTE_RESET) == LOW) {
state = RESET;
}
break;
}
delay(1000);
}