/*************************************************
* Programm: Display Statemaschine *
* Name: Suppaner Felix *
* Klasse: 2AHME *
* Datum: 25.04.2024 *
*************************************************/
#include <LiquidCrystal.h> // Bibliothek für das LCD-Display
int count; // Zähler
bool buttonPressed = false; // Variable, um den Tastendruck zu speichern
int state = 1;
#define TASTER 5 // Taster
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
void setup() {
lcd.begin(16, 2);
pinMode(TASTER, INPUT_PULLUP);
}
void loop() {
switch (state) // Statemaschine
{
case 1: // Zustand 1
lcd.setCursor(0, 0); // Cursor setzen
lcd.print("Messung Inaktiv"); // Text schreiben
lcd.setCursor(0, 1); // Cursor setzen
lcd.print(" "); // Text schreiben
if (digitalRead(TASTER) == LOW && !buttonPressed) { // Wenn Taster gedrückt und vorher nicht gedrückt
state = 2;
count = 0; // Zähler zurücksetzen
buttonPressed = true; // Tastendruck merken
}
break;
case 2: // Zustand 2
count++;
delay(1000); // Warte 1s
lcd.clear(); // Bildschirm löschen
lcd.setCursor(0, 0); // Cursor setzen
lcd.print("Messung Aktiv"); // Text schreiben
// Tasterstatus überprüfen
if (digitalRead(TASTER) == LOW && !buttonPressed) { // Wenn Taster gedrückt und vorher nicht gedrückt
state = 1; // Zurück zum Zustand 1
buttonPressed = true; // Tastendruck merken
break;
}
lcd.setCursor(0, 1); // Cursor setzen
lcd.print("Zeit: "); // Text schreiben
lcd.print(count); // Text schreiben
lcd.print(" s "); // Text schreiben
if (count >= 10) { // Wenn Zeit abgelaufen
state = 1; // Zurück zum Zustand 1
buttonPressed = false; // Zurücksetzen des Tastendrucks
}
break;
}
}