#include <LiquidCrystal_PCF8574.h>
LiquidCrystal_PCF8574 lcd(0x27);
#define BEREIT 0
#define LAUFT 1
#define ANGEHALTEN 2
#define ZWISCHENSPEICHERN 3
int zustand = 0;
double zeit = 0.00;
double display;
void isr_TasteS();
void isr_TasteR();
void isr_TasteZ();
void setup() {
Serial.begin(9600);
pinMode(PA0, INPUT_PULLDOWN);
pinMode(PA1, INPUT_PULLDOWN);
pinMode(PA2, INPUT_PULLDOWN);
attachInterrupt(digitalPinToInterrupt(PA0), isr_TasteS, RISING);
attachInterrupt(digitalPinToInterrupt(PA1), isr_TasteR, RISING);
attachInterrupt(digitalPinToInterrupt(PA2), isr_TasteZ, RISING);
/*lcd.begin(16, 2);
lcd.setBacklight(255);
lcd.clear();*/
}
void isr_TasteS() {
switch (zustand) {
case BEREIT: zustand = LAUFT;
break;
case LAUFT: zustand = ANGEHALTEN;
break;
case ANGEHALTEN: zustand = LAUFT;
break;
case ZWISCHENSPEICHERN: zustand = ANGEHALTEN;
break;
}
}
void isr_TasteR() {
zustand = BEREIT;
}
void isr_TasteZ() {
switch (zustand) {
case LAUFT: zustand = ZWISCHENSPEICHERN;
break;
case ZWISCHENSPEICHERN: zustand = LAUFT;
break;
}
display = zeit;
}
void loop() {
switch(zustand) {
case BEREIT: zeit = 0;
break;
case LAUFT: zeit += 0.01;
display = zeit;
break;
case ANGEHALTEN:
break;
case ZWISCHENSPEICHERN: zeit += 0.01;
break;
default:
break;
}
delay(10);
Serial.println(display);
/*lcd.clear();
lcd.setCursor(0, 0);
lcd.printf("Time: %01u", display);*/
}