#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define BUTTON_LEFT 13
#define BUTTON_RIGHT 12
#define BUTTON_UP 14
#define BUTTON_DOWN 27
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(115200);
pinMode(BUTTON_LEFT, INPUT);
pinMode(BUTTON_RIGHT, INPUT);
pinMode(BUTTON_UP, INPUT);
pinMode(BUTTON_DOWN, INPUT);
if(!display.begin(SSD1306_I2C_ADDRESS, 4, 15)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.display();
delay(2000); // Pause for 2 seconds
display.clearDisplay();
}
void loop() {
static int16_t scrollX = 0;
static int16_t scrollY = 0;
static String text = "Hello, ESP32!"; // Initial text
handleButtons(); // Check button inputs
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(scrollX, scrollY);
display.print(text);
display.display();
delay(50);
}
void handleButtons() {
if (digitalRead(BUTTON_LEFT) == HIGH) {
// Scroll text to the left
scrollX -= 1;
}
if (digitalRead(BUTTON_RIGHT) == HIGH) {
// Scroll text to the right
scrollX += 1;
}
if (digitalRead(BUTTON_UP) == HIGH) {
// Move text up
scrollY -= 1;
}
if (digitalRead(BUTTON_DOWN) == HIGH) {
// Move text down
scrollY += 1;
}
}