#include <Adafruit_SSD1306.h> // https://github.com/adafruit/Adafruit_SSD1306
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define I2C_ADDRESS 0x3C
#define BITMAP_WIDTH 13
#define BITMAP_HEIGHT 7
const unsigned char bmap[] PROGMEM = { // Arduino logo, 13x7px, for Adafruit_SSD1306.h
0x7d, 0xf0, 0xc7, 0x18, 0x82, 0x48, 0xba, 0xe8, 0x82, 0x48, 0xc7, 0x18, 0x7d, 0xf0
};
// #define BITMAP_WIDTH 25
// #define BITMAP_HEIGHT 13
// const unsigned char bmap [] PROGMEM = { // 'DVD', 25x13px, for Adafruit_SSD1306.h
// 0xff, 0xff, 0xff, 0x80, 0xe0, 0x1f, 0x03, 0x80, 0xfe, 0x0e, 0x7c, 0x80, 0xce, 0x4c, 0x9c, 0x80,
// 0xce, 0x69, 0x9c, 0x80, 0xcc, 0xe3, 0x99, 0x80, 0x83, 0xe7, 0x07, 0x80, 0xff, 0xff, 0xff, 0x80,
// 0xff, 0xff, 0xff, 0x80, 0xe6, 0xb6, 0xe7, 0x80, 0x86, 0xbe, 0xe1, 0x80, 0xfe, 0x82, 0xff, 0x80,
// 0xff, 0xff, 0xff, 0x80
// };
int MAXX = SCREEN_WIDTH - BITMAP_WIDTH; // size of usable screen width
int MAXY = SCREEN_HEIGHT - BITMAP_HEIGHT; // size of usable screen height
int xMov = 2; // horizontal movement
int yMov = 2; // vertical movement
int x = random(SCREEN_WIDTH); // starting x location
int y = random(SCREEN_HEIGHT); // starting y location
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // create oled object
void setup() {
Serial.begin(115200);
oled.begin(SSD1306_SWITCHCAPVCC, I2C_ADDRESS);
}
void loop() {
dvd();
}
void dvd() {
if (x <= 1 || x >= MAXX) // x boundries
xMov = -xMov;
if (y <= 1 || y >= MAXY) // y boundries
yMov = -yMov;
x += xMov;
y += yMov;
oled.clearDisplay();
oled.drawBitmap(x, y, bmap, BITMAP_WIDTH, BITMAP_HEIGHT, WHITE);
oled.display();
}