#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
Serial.begin(9600);
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;)
;
}
display.clearDisplay();
}
void displayMessage(const char *message, int textSize = 1, int delayTime = 2000) {
display.setTextSize(textSize);
display.setTextColor(WHITE);
display.setCursor(0, 28);
display.println(message);
display.display();
delay(delayTime);
display.clearDisplay();
}
void displayNumber(long number, int textSize = 1, int delayTime = 2000) {
display.setTextSize(textSize);
display.setCursor(0, 28);
display.println(number);
display.display();
delay(delayTime);
display.clearDisplay();
}
void displayHexDecimal(byte value, int delayTime = 2000) {
display.setCursor(0, 28);
display.print("0x");
display.print(value, HEX);
display.print("(HEX) = ");
display.print(value, DEC);
display.println("(DEC)");
display.display();
delay(delayTime);
display.clearDisplay();
}
void displayScroll(const char *message, int scrollDelay = 2000) {
display.setCursor(0, 0);
display.setTextSize(1);
display.println(message);
display.display();
display.startscrollright(0x00, 0x00);
delay(scrollDelay);
display.stopscroll();
delay(1000);
}
void loop() {
displayMessage("Hello world!");
displayMessage("Hello world!", 2);
displayNumber(123456789);
displayHexDecimal(0xFF);
displayMessage("Scroll full screen");
displayScroll("Full screen scrolling!");
displayScroll("Scroll some part", 1000);
}