#include <Bounce2.h>
#define T1 11
#define T2 10
#define B 12
#define R 13
#define GR 9
#define GE 8
Bounce btn1 = Bounce();
Bounce btn2 = Bounce();
int e = 0;
int z = 0;
void setup()
{
Serial.begin(9600);
btn1.attach(T1, INPUT_PULLUP);
btn2.attach(T2, INPUT_PULLUP);
btn1.interval(10);
btn2.interval(10);
pinMode(R, OUTPUT);
pinMode(B, OUTPUT);
pinMode(GR, OUTPUT);
pinMode(GE, OUTPUT);
}
void eErkennen ()
{
if (btn1.fell())
{
e = 2;
return;
}
if(btn1.rose())
{
e = 1;
return;
}
if(btn2.fell())
{
e = 4;
return;
}
if(btn2.rose())
{
e = 3;
return;
}
}
void zustandsUebergang ()
{
switch(e)
{
case 0:
{
z = 0;
break;
}
case 1:
{
if(z == 1|| z == 2)
{
z = 2;
break;
}
if(z == 3 || z == 4)
{
z = 4;
break;
}
if(z == 9 || z == 10)
{
z = 10;
break;
}
if(z == 5 ||z == 6 ||z == 7 ||z == 8)
{
z = 11;
}
break;
}
case 2:
{
if(z == 0 || z == 1)
{
z = 1;
break;
}
if(z == 6 || z == 8)
{
z = 8;
break;
}
if(z == 2 ||z == 3 ||z == 4 ||z == 5||z == 7||z == 9||z == 10)
{
z = 11;
}
break;
}
case 3:
{
if(z == 4|| z == 5)
{
z = 5;
break;
}
if(z == 6 || z == 7)
{
z = 7;
break;
}
if(z == 8 || z == 9)
{
z = 9;
break;
}
if(z == 1 ||z == 2 ||z == 3 ||z == 10)
{
z = 11;
}
break;
}
case 4:
{
if(z == 0|| z == 6)
{
z = 6;
break;
}
if(z == 1 || z == 3)
{
z = 3;
break;
}
if(z == 2 ||z == 4 ||z == 5 ||z == 7||z == 8||z == 9||z == 10)
{
z = 11;
break;
}
break;
}
}
}
void zAuswerten ()
{
if (z == 2)
{
digitalWrite(R, HIGH);
//digitalWrite(B, LOW);
//digitalWrite(GR, LOW);
//digitalWrite(GE, LOW);
z = 0;
}
if (z == 5)
{
//digitalWrite(R, LOW);
//digitalWrite(B, LOW);
digitalWrite(GR, HIGH);
//digitalWrite(GE, LOW);
z = 0;
}
if (z == 7)
{
//digitalWrite(R, LOW);
//digitalWrite(B, LOW);
//digitalWrite(GR, LOW);
digitalWrite(GE, HIGH);
z = 0;
}
if (z == 10)
{
// digitalWrite(R, LOW);
digitalWrite(B, HIGH);
//digitalWrite(GR, LOW);
//digitalWrite(GE, LOW);
z = 0;
}
if (z==11)
{
digitalWrite(R, LOW);
digitalWrite(B, LOW);
digitalWrite(GR, LOW);
digitalWrite(GE, LOW);
z = 0;
}
}
void loop()
{
btn1.update();
btn2.update();
eErkennen();
zustandsUebergang();
zAuswerten();
if(btn1.fell()|| btn2.fell()||btn1.rose()|| btn2.rose())
{
Serial.println(z);
}
}