#include <U8g2lib.h>
#include <Wire.h>
#include "ErriezRotaryFullStep.h"
#include "Menu.h"
#include "Item.h"
U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
#define ROTARY_PIN1 2
#define ROTARY_PIN2 3
#define SWITCH 4
RotaryFullStep rotary(ROTARY_PIN1, ROTARY_PIN2, false, 150);
Menu menu(&u8g2);
Item items[5]{
Item("[1] 1.1 10"),
Item("[2] LFO 19.1"),
Item("[3] Start ="),
Item("[4] End 23.1"),
Item("SETTINGS"),
};
byte previousSelectedItem = -1;
void setup() {
Serial.begin(9600);
u8g2.begin();
u8g2.setFont(u8g2_font_pressstart2p_8r);
u8g2.setFontMode(1);
pinMode(SWITCH, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(ROTARY_PIN1), rotaryInterrupt, CHANGE);
attachInterrupt(digitalPinToInterrupt(ROTARY_PIN2), rotaryInterrupt, CHANGE);
for (byte i = 0; i < 5; i++) {
menu.addItem(i, &items[i]);
}
}
void checkSwitch()
{
bool sensorVal = digitalRead(SWITCH);
Serial.println(sensorVal);
}
void rotaryInterrupt()
{
int rotaryState = rotary.read();
if (rotaryState > 0) {
menu.down();
}
else if (rotaryState < 0) {
menu.up();
}
}
void loop() {
checkSwitch();
byte selectedItem = menu.getSelectedItem();
if (previousSelectedItem != selectedItem) {
menu.display();
previousSelectedItem = selectedItem;
}
}