#include <LiquidCrystal_I2C.h>
#include <Bounce2.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
#define PIN_MODE INPUT_PULLUP
#define INTERVAL_IN_MS 10
Bounce2::Button b1 = Bounce2::Button();
Bounce2::Button b2 = Bounce2::Button();
int z = 0;
int pos = 0;
unsigned long last = millis();
void setup() {
lcd.init();
lcd.backlight();
b1.attach (7, PIN_MODE);
b1.interval (INTERVAL_IN_MS);
b1.setPressedState (LOW);
b2.attach (6, PIN_MODE);
b2.interval (INTERVAL_IN_MS);
b2.setPressedState (LOW);
lcd.clear();
}
void loop() {
b1.update();
b2.update();
if (z == 0) //im Zustand 0
{
if (b2.pressed()) // Falls Down gedrückt wurde
{
z = 1;
}
} else if(z == 1)
{
if (millis() - last > 500)
{
pos++;
last = millis();
}
if(pos == 16)
{
z = 2;
}
if (b1.pressed())
{
z = 4;
}
}
else if (z == 3)
{
if (millis() - last > 500)
{
pos--;
last = millis();
}
if(pos == 0)
{
z = 0;
}
if (b2.pressed())
{
z = 4;
}
}
else if (z == 2)
{
if (b1.pressed())
{
z = 3;
}
}
else if (z == 4)
{
if (b1.pressed())
{
z = 3;
}
if (b2.pressed())
{
z = 1;
}
}
lcd.setCursor(0,0);
lcd.print(z);
lcd.setCursor(0,1);
lcd.print(pos);
lcd.print(" ");
}