#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <Wire.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// Define menu items and actions
const char* menuItems[] = {"Item 1", "Item 2", "Item 3", "Item 4"};
int selectedItem = 0;
// Define the button pin for menu navigation
const int upButtonPin = 2; // Replace with your actual button pin number
const int downButtonPin = 4; // Replace with your actual button pin number
void setup() {
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.display(); // Initialize with the display on (splash screen)
delay(2000); // Splash screen delay
display.clearDisplay();
display.setTextColor(SSD1306_WHITE);
display.setTextSize(1);
display.setCursor(0, 0);
display.println(menuItems[selectedItem]);
display.display();
}
void loop() {
// Add code for button or encoder input to navigate the menu
// Update the selectedItem variable based on user input
// Example: You can use digitalRead() to check button states or encoder rotation
// Example:
if (digitalRead(upButtonPin) == HIGH) {
selectedItem = (selectedItem + 1);
if (selectedItem > 4){
selectedItem = 4;
}
displaySelectedItem();
delay(200); // Button debounce
}
if (digitalRead(downButtonPin) == HIGH && selectedItem <=4) {
selectedItem = (selectedItem - 1);
if (selectedItem < 0){
selectedItem = 0;
}
displaySelectedItem();
delay(200); // Button debounce
}
}
void displaySelectedItem() {
display.clearDisplay();
display.setCursor(0, 0);
display.println(menuItems[selectedItem]);
display.display();
}