#include "U8g2lib.h"
// Initialize the U8G2 library for the SSD1306 OLED display with I²C
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/U8X8_PIN_NONE);
#define BUTTON1_PIN 32 // Button for Screen 0
#define BUTTON2_PIN 33 // Button for Screen 1
#define BUTTON3_PIN 25 // Button to toggle screens
int current_screen = 0; // 0: initial screen, 1: Screen 0, 2: Screen 1, 3: Screen 2
void setup() {
// Initialize pins for buttons
pinMode(BUTTON1_PIN, INPUT_PULLUP);
pinMode(BUTTON2_PIN, INPUT_PULLUP);
pinMode(BUTTON3_PIN, INPUT_PULLUP);
// Initialize the OLED display
u8g2.begin();
}
void loop() {
// Button logic to change screens
if (digitalRead(BUTTON1_PIN) == LOW) {
current_screen = (current_screen == 1) ? 0 : 1; // Toggle Screen 0
delay(200); // Debounce delay
} else if (digitalRead(BUTTON2_PIN) == LOW) {
current_screen = (current_screen == 2) ? 0 : 2; // Toggle Screen 1
delay(200); // Debounce delay
} else if (digitalRead(BUTTON3_PIN) == LOW) {
current_screen = (current_screen + 1) % 4; // Toggle through screens
delay(200); // Debounce delay
}
// Display logic
u8g2.firstPage();
do {
if (current_screen == 0) {
// Initial screen with options
u8g2.setFont(u8g2_font_ncenB08_tr);
u8g2.drawStr(10, 20, "Select a Screen:");
u8g2.drawStr(10, 40, "1: Screen 0");
u8g2.drawStr(10, 60, "2: Screen 1");
u8g2.drawStr(10, 80, "3: Screen 2");
} else if (current_screen == 1) {
// Screen 0
u8g2.setFont(u8g2_font_ncenB08_tr);
u8g2.drawStr(30, 30, "Screen 0");
} else if (current_screen == 2) {
// Screen 1
u8g2.setFont(u8g2_font_ncenB08_tr);
u8g2.drawStr(30, 30, "Screen 1");
} else if (current_screen == 3) {
// Screen 2 (QR Code Display)
u8g2.setFont(u8g2_font_ncenB08_tr);
u8g2.drawStr(30, 30, "Screen 2: QR Code");
// Placeholder for QR Code: replace with actual QR Code generation
u8g2.drawBox(40, 40, 50, 50); // Placeholder box
}
} while (u8g2.nextPage());
}