#include <Wire.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // Larghezza schermo in pixel
#define SCREEN_HEIGHT 64 // Altezza schermo in pixel
#define OLED_RESET -1 // Pin di reset dello schermo OLED
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int enterButton = 8;
int upButton = 7;
int downButton = 9;
int menuState = 0;
int menuCursor = 0;
void drawMenu() {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("MENU");
display.setCursor(0,20);
display.print(menuCursor == 0 ? "<" : " ");
display.println("Prima");
display.setCursor(0,30);
display.print(menuCursor == 1 ? "<" : " ");
display.println("Seconda");
display.setCursor(0,40);
display.print(menuCursor == 2 ? "<" : " ");
display.println("Uscita");
display.display();
}
void setup() {
pinMode(enterButton, INPUT_PULLUP);
pinMode(upButton, INPUT_PULLUP);
pinMode(downButton, INPUT_PULLUP);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("TESTO STATICO");
display.display();
}
void loop() {
int enterState = digitalRead(enterButton);
int upState = digitalRead(upButton);
int downState = digitalRead(downButton);
if (enterState == LOW) {
if (menuState == 0) {
menuState = 1;
menuCursor = 0;
drawMenu();
}
else if (menuCursor == 0) {
// Esegui azione per la voce "Prima"
}
else if (menuCursor == 1) {
// Esegui azione per la voce "Seconda"
}
else if (menuCursor == 2) {
menuState = 0;
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("TESTO STATICO");
display.display();
}
}
else if (upState == LOW) {
if (menuState == 1) {
menuCursor--;
if (menuCursor < 0) {
menuCursor = 2;
}
drawMenu();
}
}
else if (downState == LOW) {
if (menuState == 1) {
menuCursor++;
if (menuCursor > 2) {
menuCursor = 0;
}
drawMenu();
}
}
}