#include <Bounce2.h>
Bounce b1 = Bounce();
Bounce b2 = Bounce();
byte e = 0;
byte z = 0;
void e_erkennen()
{
if(b1.fell())
{
e = 1;
return;
}
if(b1.rose())
{
e = 2;
return;
}
if(b2.fell())
{
e = 3;
return;
}
if(b2.rose())
{
e = 4;
return;
}
}
void e_auswerten()
{
switch(e)
{
case 0: break;
case 1:
if (z == 0 || z == 1 || z == 2 || z == 3 || z == 4 || z == 5 || z == 6 || z == 7)
{
z = 1;
}
else if (z == 5 || z == 6)
{
z = 6;
}
else
{
z = 0;
}
break;
case 2:
if (z == 1 || z == 5)
{
z = 5;
}
else if (z == 3 || z == 4)
{
z = 4;
Serial.println("+");
z = 0;
}
else
{
z = 0;
}
break;
case 3:
if (z == 5 || z == 6)
{
z = 6;
}
else if (z == 1 || z == 2)
{
z = 2;
}
else
{
z = 0;
}
break;
case 4:
if (z == 6 || z == 7)
{
z = 7;
Serial.println("-");
z = 0;
}
else if (z == 2 || z == 3)
{
z = 3;
}
else
{
z = 0;
}
break;
}
}
void setup() {
Serial.begin(9600);
z = 0;
b1.attach( 2, INPUT_PULLUP); // USE EXTERNAL PULL-UP
// DEBOUNCE INTERVAL IN MILLISECONDS
b1.interval(5);
b2.attach( 3, INPUT_PULLUP); // USE EXTERNAL PULL-UP
// DEBOUNCE INTERVAL IN MILLISECONDS
b2.interval(5);
}
void loop() {
b1.update();
b2.update();
e_erkennen();
e_auswerten();
delay(100);
}