#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
//#define SCREEN_WIDTH 128 // OLED display width, in pixels
//#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);
// 'stripe', 128x64px
static const unsigned char imstripe [] PROGMEM = {
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff,
0xff, 0xc0, 0x0f, 0xfc, 0x00, 0xff, 0xc0, 0x1f, 0xf8, 0x01, 0xff, 0x80, 0x1f, 0xf8, 0x03, 0xff
};
/*
// Array of all bitmaps for convenience. (Total bytes used to store images in PROGMEM = 1040)
const int imallArray_LEN = 1;
const unsigned char* imallArray[1] = {
imstripe
};
*/
/*
// 'block (1)', 8x8px
const unsigned char imblock1 [] PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// Array of all bitmaps for convenience. (Total bytes used to store images in PROGMEM = 32)
const int imallArray_LEN = 1;
const unsigned char* imallArray[1] = {
imblock1
};
*/
static uint8_t xPos = 0;
static uint8_t yPos = 0;
void setup() {
Wire.begin(); // Initialize I2C communication
Wire.setClock(400000); // Set I2C bus speed to 400 kHz (Fast Mode)
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Initialize the display
display.clearDisplay();
//display.setTextColor(WHITE);
//display.display();
//display.startscrollright(0, 0);
//display.startscrollright(20, 20);
}
void loop() {
// Declare xPos as a static variable to retain its value between function calls
draw(xPos, yPos);
xPos = (xPos + 5); //% OLED_WIDTH;
//display.display();
//display.clearDisplay();
// Increment xPos and wrap around when it reaches the end of the screen
// Adjust the delay as needed to control the scrolling speed
}
void draw(uint8_t xPos, uint8_t yPos) {
//display.clearDisplay();
display.drawBitmap(xPos, yPos, imstripe, 128, 64, WHITE);
//display.drawBitmap(xPos, yPos, imstripe, OLED_WIDTH/8, OLED_HEIGHT, WHITE);
display.display();
display.drawBitmap(xPos = xPos-5, yPos, imstripe, 128, 64, BLACK);
display.display();
//yPos = (yPos + 8) % OLED_HEIGHT;
delay(0);
//display.clearDisplay();
//
//yPos = (yPos + 1) % OLED_HEIGHT;
}