#include <Wire.h>
#include <EasyButton.h>
#include "SSD1306Ascii.h"
#include "SSD1306AsciiWire.h"
#define I2C_ADDR 0x3C
#define RST_PIN -1
SSD1306AsciiWire oled;
#define BUTTON_L 2
#define BUTTON_R 4
#define BUTTON_U 3
#define BUTTON_D 6
#define BUTTON_O 5
EasyButton up(BUTTON_U);
EasyButton down(BUTTON_D);
EasyButton left(BUTTON_L);
EasyButton right(BUTTON_R);
EasyButton ok(BUTTON_O);
bool gesture_tog = false;
long int gesture_timer = 0;
void on_ok() {
gesture_tog = true;
gesture_timer = millis();
}
void on_up() {
if(gesture_tog)
{
oled.print("u ");
gesture_tog = false;
}
}
void on_down() {
if(gesture_tog)
{
oled.print("d ");
gesture_tog = false;
}
}
void on_left() {
if(gesture_tog)
{
oled.print("l ");
gesture_tog = false;
}
}
void on_right() {
if(gesture_tog)
{
oled.print("r ");
gesture_tog = false;
}
}
void setup() {
Serial.begin(115200);
up.begin();
down.begin();
left.begin();
right.begin();
ok.begin();
up.onPressed(on_up);
down.onPressed(on_down);
left.onPressed(on_left);
right.onPressed(on_right);
ok.onPressed(on_ok);
Wire.begin();
oled.begin(&Adafruit128x64, I2C_ADDR);
oled.setFont(ZevvPeep8x16);
oled.clear();
size_t size = oled.strWidth("16:27");
oled.setCursor((oled.displayWidth()-size)/2, 15);
oled.println("16:27");
}
void loop() {
up.read();
down.read();
left.read();
right.read();
ok.read();
if(gesture_tog)
{
if(gesture_timer + 200 < millis())
{
oled.print("o ");
gesture_tog = false;
}
}
}