#include <Bounce2.h>
#define PIN_MODE INPUT_PULLUP
#define INTERVAL_IN_MS 10
#define TIMEOUT 2500
#define LED_RED 10
#define LED_YEL 9
#define LED_GRN 8
Bounce2::Button BTN_YEL = Bounce2::Button();
Bounce2::Button BTN_BLU = Bounce2::Button();
Bounce2::Button BTN_GRN = Bounce2::Button();
bool z1 = false;
int z = 0;
unsigned long last;
void setup() {
Serial.begin(9600);
BTN_GRN.attach ( 5, PIN_MODE );
BTN_GRN.interval(INTERVAL_IN_MS);
BTN_GRN.setPressedState ( LOW );
BTN_BLU.attach ( 6, PIN_MODE );
BTN_BLU.interval(INTERVAL_IN_MS);
BTN_BLU.setPressedState ( LOW );
BTN_YEL.attach ( 7, PIN_MODE );
BTN_YEL.interval(INTERVAL_IN_MS);
BTN_YEL.setPressedState ( LOW );
pinMode(LED_RED, OUTPUT);
pinMode(LED_YEL, OUTPUT);
pinMode(LED_GRN, OUTPUT);
}
void loop() {
BTN_YEL.update();
BTN_BLU.update();
BTN_GRN.update();
Serial.print("Aktueller Zustand: ");
Serial.println(z);
switch(z) {
case 0: // Startzustand
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_YEL, LOW);
digitalWrite(LED_GRN, LOW);
if (BTN_GRN.pressed()) {
digitalWrite(LED_RED, LOW);
digitalWrite(LED_YEL, HIGH);
z = 1;
}
break;
case 1: // Zustand 1
digitalWrite(LED_RED, LOW);
if (BTN_YEL.pressed()) {
digitalWrite(LED_YEL, HIGH);
z = 2;
}
else if (BTN_GRN.pressed()){
z=0;
}
break;
case 2: // Zustand 2
if (BTN_BLU.pressed()) {
digitalWrite(LED_YEL, HIGH);
z = 3;
}
else if (BTN_GRN.pressed()){
z=0;
}
break;
case 3: // Zustand 3
if (BTN_YEL.pressed()) {
digitalWrite(LED_YEL, HIGH);
z = 4;
}
else if (BTN_GRN.pressed()){
z=0;
}
break;
case 4: // Zustand 4
if (BTN_BLU.pressed()) {
digitalWrite(LED_YEL, HIGH);
z = 5;
}
else if (BTN_GRN.pressed()){
z=0;
}
break;
case 5: // Zustand 5
if (BTN_YEL.pressed()) {
digitalWrite(LED_YEL, HIGH);
z = 6;
}
else if (BTN_GRN.pressed()){
z=0;
}
break;
case 6: // Zustand 6
if (BTN_GRN.pressed()) {
digitalWrite(LED_YEL, LOW);
digitalWrite(LED_GRN, HIGH);
z = 0;
}
else if (BTN_YEL.pressed() || BTN_BLU.pressed()){
z=0;
}
break;
default:
z = 0;
break;
}
}