#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
const int pinA = 35;
const int pinB = 34;
const int pinButton = 32;
int counter = 0;
int lastStateA;
int lastButtonState = HIGH;
int currentMenu = -1;
const int numMenus = 6;
unsigned long now = 0;
void setup() {
Serial.begin(115200);
pinMode(pinA, INPUT);
pinMode(pinB, INPUT);
pinMode(pinButton, INPUT_PULLUP);
lastStateA = digitalRead(pinA);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
delay(500);
cover();
delay(2000);
}
void loop() {
bool currentStateA = digitalRead(pinA);
bool currentStateB = digitalRead(pinB);
if (currentStateA > lastStateA) {
if (currentStateB != currentStateA) {
counter++; // Putaran searah jarum jam
} else {
counter--; // Putaran berlawanan arah jarum jam
}
if (counter > 0) {
currentMenu = (currentMenu + 1) % numMenus; //ke menu berikutnya
} else {
currentMenu = (currentMenu - 1 + numMenus) % numMenus; //ke menu sebelumnya
}
menu(currentMenu);
Serial.print(counter);
Serial.print(" , ");
Serial.println(currentMenu);
counter = 0;
}
lastStateA = currentStateA;
}
void cover() {
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(12, 3);
display.println("MENU LIST");
display.setTextSize(1);
display.setCursor(59, 30);
display.println("by");
display.setCursor(15, 40);
display.println("Alditya - 492752");
display.display();
}
void menu(int num) {
switch (num) {
case 0:
display.clearDisplay();
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.setTextSize(2);
display.println("Select:");
display.setTextSize(2);
display.println("menu 1 <-");
display.setTextSize(1);
display.println("menu 2");
display.setTextSize(1);
display.println("menu 3");
display.display();
break;
case 1:
display.clearDisplay();
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.setTextSize(2);
display.println("Select:");
display.setTextSize(1);
display.println("menu 1");
display.setTextSize(2);
display.println("menu 2 <-");
display.setTextSize(1);
display.println("menu 3");
display.display();
break;
case 2:
display.clearDisplay();
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.setTextSize(2);
display.println("Select:");
display.setTextSize(1);
display.println("menu 1");
display.setTextSize(1);
display.println("menu 2");
display.setTextSize(2);
display.println("menu 3 <-");
display.display();
break;
case 3:
display.clearDisplay();
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.setTextSize(2);
display.println("Select:");
display.setTextSize(2);
display.println("menu 4 <-");
display.setTextSize(1);
display.println("menu 5");
display.setTextSize(1);
display.println("menu 6");
display.display();
break;
case 4:
display.clearDisplay();
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.setTextSize(2);
display.println("Select:");
display.setTextSize(1);
display.println("menu 4");
display.setTextSize(2);
display.println("menu 5 <-");
display.setTextSize(1);
display.println("menu 6");
display.display();
break;
case 5:
display.clearDisplay();
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.setTextSize(2);
display.println("Select:");
display.setTextSize(1);
display.println("menu 4");
display.setTextSize(1);
display.println("menu 5");
display.setTextSize(2);
display.println("menu 6 <-");
display.display();
break;
}
}