#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Wire.h>
#define SCREEN_I2C_ADDR 0x3D // or 0x3C
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RST_PIN -1 // Reset pin (-1 if not available)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RST_PIN);
#define FRAME_DELAY 100 // Delay between frames in milliseconds
#define FRAME_WIDTH 32
#define FRAME_HEIGHT 32
const byte PROGMEM frames[][128] = {
// Add your frame data here
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,248,63,192,14,6,96,112,24,3,192,24,16,1,128,8,32,0,0,4,32,0,0,4,96,0,0,6,96,0,0,6,96,0,0,6,96,0,0,6,32,0,0,4,32,0,0,4,48,0,0,12,16,0,0,8,24,0,0,24,12,0,0,48,6,0,0,96,3,0,0,192,1,128,1,128,0,192,3,0,0,112,14,0,0,24,24,0,0,12,48,0,0,3,192,0,0,1,128,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,248,63,192,14,6,96,112,24,3,192,24,16,1,128,8,32,0,0,4,32,0,0,4,96,0,0,6,96,0,0,6,96,0,0,6,96,0,0,6,32,0,0,4,32,0,0,4,48,0,0,12,16,0,0,8,24,0,0,24,12,0,0,48,6,0,0,96,3,0,0,192,1,128,1,128,0,192,3,0,0,112,14,0,0,24,24,0,0,12,48,0,0,3,192,0,0,1,128,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,248,63,192,14,6,96,112,24,3,192,24,16,1,128,8,32,0,0,4,32,0,0,4,96,0,0,6,96,0,0,6,96,0,0,6,96,0,0,6,32,0,0,4,32,0,0,4,48,0,0,12,16,0,0,8,24,0,0,24,12,0,0,48,6,0,0,96,3,0,0,192,1,128,1,128,0,192,3,0,0,112,14,0,0,24,24,0,0,12,48,0,0,3,192,0,0,1,128,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,248,63,192,14,6,96,112,24,3,192,24,16,1,128,8,32,0,0,4,32,0,0,4,96,0,0,6,96,0,0,6,96,0,0,6,96,0,0,6,32,0,0,4,32,0,0,4,48,0,0,12,16,0,0,8,24,0,0,24,12,0,0,48,6,0,0,96,3,0,0,192,1,128,1,128,0,192,3,0,0,112,14,0,0,24,24,0,0,12,48,0,0,3,192,0,0,1,128,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,14,0,3,252,63,192,6,6,96,96,12,3,192,48,24,1,128,24,16,0,0,8,16,0,0,8,48,0,0,12,48,0,0,12,16,0,0,8,16,0,0,8,16,0,0,8,24,0,0,24,12,0,0,48,4,0,0,32,6,0,0,96,3,0,0,192,1,128,1,128,0,192,3,0,0,48,12,0,0,24,24,0,0,14,112,0,0,3,192,0,0,1,128,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,31,0,1,158,113,128,6,3,192,96,4,1,128,32,8,0,0,16,8,0,0,16,8,0,0,16,8,0,0,16,8,7,224,16,8,7,224,16,8,7,224,16,4,3,192,32,6,1,128,96,2,0,0,64,1,0,0,128,0,128,1,0,0,64,2,0,0,48,12,0,0,24,24,0,0,12,48,0,0,3,192,0,0,1,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,64,2,0,15,248,31,240,28,7,224,56,48,3,192,12,96,1,128,6,64,0,0,2,192,0,0,3,128,62,124,1,128,127,254,1,128,255,255,1,128,255,255,1,128,255,255,1,192,255,255,3,64,127,254,2,64,127,254,2,96,63,252,6,48,63,248,12,16,15,240,8,24,7,224,24,12,3,192,48,22,0,0,96,3,0,0,192,0,192,3,134,3,96,6,192,0,56,28,0,0,28,60,0,0,22,96,0,0,3,192,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,64,2,0,16,1,130,16,24,1,128,16,3,248,63,192,15,254,127,240,31,255,255,248,31,255,255,248,63,255,255,252,63,255,255,252,127,255,255,254,127,255,255,254,127,255,255,254,127,255,255,254,63,255,255,252,63,255,255,252,63,255,255,252,31,255,255,248,31,255,255,248,15,255,255,240,7,255,255,224,3,255,255,192,49,255,255,128,0,255,255,4,0,127,254,0,2,31,248,64,6,15,240,96,0,3,192,0,0,49,132,0,0,32,0,0,0,0,0,0},
{0,0,0,0,0,65,130,0,0,65,130,8,48,0,128,24,0,0,0,0,3,248,63,192,15,254,127,240,31,255,255,248,31,255,255,248,63,255,255,252,63,255,255,252,127,255,255,254,127,255,255,254,127,255,255,254,127,255,255,254,63,255,255,252,63,255,255,252,63,255,255,252,31,255,255,248,31,255,255,248,15,255,255,240,7,255,255,224,3,255,255,192,33,255,255,128,96,255,255,4,0,127,254,4,0,31,248,0,4,15,240,32,12,3,192,48,0,1,132,0,0,32,6,0,0,32,2,0},
{0,64,130,0,0,65,130,0,32,0,0,8,48,0,0,8,0,0,0,0,3,248,63,192,15,254,127,240,31,255,255,248,31,255,255,248,63,255,255,252,63,255,255,252,127,255,255,254,127,255,255,254,127,255,255,254,127,255,255,254,63,255,255,252,63,255,255,252,63,255,255,252,31,255,255,248,31,255,255,248,15,255,255,240,7,255,255,224,3,255,255,192,1,255,255,128,64,255,255,4,0,127,254,6,0,31,248,0,0,15,240,0,12,3,192,48,8,1,128,16,0,32,2,0,0,96,2,0},
{0,64,130,0,0,0,0,0,32,0,0,8,0,0,0,0,0,0,0,0,3,248,63,192,15,254,127,240,31,255,255,248,31,255,255,248,63,255,255,252,63,255,255,252,127,255,255,254,127,255,255,254,127,255,255,254,127,255,255,254,63,255,255,252,63,255,255,252,63,255,255,252,31,255,255,248,31,255,255,248,15,255,255,240,7,255,255,224,3,255,255,192,1,255,255,128,64,255,255,0,0,127,254,2,0,31,248,0,0,15,240,0,8,3,192,0,8,1,128,16,0,0,0,0,0,96,2,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,248,63,192,15,254,127,240,31,255,255,248,31,255,255,248,63,255,255,252,63,255,255,252,127,255,255,254,127,255,255,254,127,255,255,254,127,255,255,254,63,255,255,252,63,255,255,252,63,255,255,252,31,255,255,248,31,255,255,248,15,255,255,240,7,255,255,224,3,255,255,192,1,255,255,128,0,255,255,0,0,127,254,0,0,31,248,0,0,15,240,0,0,3,192,0,0,1,128,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,248,63,192,15,254,127,240,31,255,255,248,31,255,255,248,63,255,255,252,63,255,255,252,127,255,255,254,127,255,255,254,127,255,255,254,127,255,255,254,63,255,255,252,63,255,255,252,63,255,255,252,31,255,255,248,31,255,255,248,15,255,255,240,7,255,255,224,3,255,255,192,1,255,255,128,0,255,255,0,0,127,254,0,0,31,248,0,0,15,240,0,0,3,192,0,0,1,128,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,248,63,192,15,254,127,240,31,255,255,248,31,255,255,248,63,255,255,252,63,255,255,252,127,255,255,254,127,255,255,254,127,255,255,254,127,255,255,254,63,255,255,252,63,255,255,252,63,255,255,252,31,255,255,248,31,255,255,248,15,255,255,240,7,255,255,224,3,255,255,192,1,255,255,128,0,255,255,0,0,127,254,0,0,31,248,0,0,15,240,0,0,3,192,0,0,1,128,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,248,63,192,15,254,127,240,31,255,255,248,31,255,255,248,63,255,255,252,63,255,255,252,127,255,255,254,127,255,255,254,127,255,255,254,127,255,255,254,63,255,255,252,63,255,255,252,63,255,255,252,31,255,255,248,31,255,255,248,15,255,255,240,7,255,255,224,3,255,255,192,1,255,255,128,0,255,255,0,0,127,254,0,0,31,248,0,0,15,240,0,0,3,192,0,0,1,128,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,248,63,192,15,254,127,240,31,255,255,248,31,255,255,248,63,255,255,252,63,255,255,252,127,255,255,254,127,255,255,254,127,255,255,254,127,255,255,254,63,255,255,252,63,255,255,252,63,255,255,252,31,255,255,248,31,255,255,248,15,255,255,240,7,255,255,224,3,255,255,192,1,255,255,128,0,255,255,0,0,127,254,0,0,31,248,0,0,15,240,0,0,3,192,0,0,1,128,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,248,63,192,15,254,127,240,31,255,255,248,31,255,255,248,63,255,255,252,63,255,255,252,127,255,255,254,127,255,255,254,127,255,255,254,127,255,255,254,63,255,255,252,63,255,255,252,63,255,255,252,31,255,255,248,31,255,255,248,15,255,255,240,7,255,255,224,3,255,255,192,1,255,255,128,0,255,255,0,0,127,254,0,0,31,248,0,0,15,240,0,0,3,192,0,0,1,128,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,248,63,192,15,254,127,240,31,255,255,248,31,255,255,248,63,255,255,252,63,255,255,252,127,255,255,254,127,255,255,254,127,255,255,254,127,255,255,254,63,255,255,252,63,255,255,252,63,255,255,252,31,255,255,248,31,255,255,248,15,255,255,240,7,255,255,224,3,255,255,192,1,255,255,128,0,255,255,0,0,127,254,0,0,31,248,0,0,15,240,0,0,3,192,0,0,1,128,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,248,31,192,15,252,63,240,31,255,255,248,63,255,255,252,63,255,255,252,127,255,255,254,127,255,255,254,127,255,255,254,255,255,255,255,255,255,255,255,127,255,255,254,127,255,255,254,127,255,255,254,127,255,255,254,63,255,255,252,63,255,255,252,31,255,255,248,15,255,255,240,7,255,255,224,3,255,255,192,1,255,255,128,0,255,255,0,0,127,254,0,0,31,248,0,0,15,240,0,0,3,192,0,0,1,128,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,248,31,224,31,254,127,248,63,255,255,252,127,255,255,254,127,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127,255,255,254,127,255,255,254,127,255,255,254,63,255,255,252,31,255,255,248,31,255,255,248,15,255,255,240,7,255,255,224,3,255,255,192,0,255,255,0,0,127,254,0,0,63,252,0,0,15,240,0,0,7,224,0,0,3,192,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,240,15,128,7,252,63,224,15,254,127,240,31,255,255,248,63,255,255,252,127,255,255,252,127,255,255,254,127,255,255,254,127,255,255,254,127,255,255,254,127,255,255,254,127,255,255,254,63,255,255,252,63,255,255,252,63,255,255,252,31,255,255,248,15,255,255,240,15,255,255,240,7,255,255,224,3,255,255,128,0,255,255,0,0,127,254,0,0,63,252,0,0,15,240,0,0,7,224,0,0,1,128,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,248,31,192,7,254,127,224,15,255,255,240,31,255,255,248,63,255,255,248,63,255,255,252,63,255,255,252,63,255,255,252,63,255,255,252,63,255,255,252,63,255,255,252,63,255,255,252,31,255,255,248,31,255,255,248,15,255,255,240,7,255,255,224,7,255,255,224,3,255,255,192,0,255,255,0,0,127,254,0,0,63,252,0,0,31,240,0,0,7,224,0,0,3,192,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,248,31,192,6,14,112,96,12,3,192,48,24,1,128,24,48,24,24,12,32,126,126,4,32,255,255,4,33,255,255,4,33,255,255,132,33,255,255,132,33,255,255,132,48,255,255,12,16,255,255,8,24,127,254,24,8,63,252,16,12,31,248,48,6,15,240,96,3,7,224,192,1,129,129,128,0,96,6,0,0,48,12,0,0,24,24,0,0,6,96,0,0,3,192,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,248,63,192,14,6,96,112,24,3,192,24,16,1,128,8,32,0,0,4,32,0,0,4,96,0,0,6,96,0,0,6,96,6,96,6,96,15,240,6,32,15,240,4,32,15,240,4,48,7,224,12,16,3,192,8,24,0,0,24,12,0,0,48,6,0,0,96,3,0,0,192,1,128,1,128,0,192,3,0,0,112,14,0,0,24,24,0,0,12,48,0,0,3,192,0,0,1,128,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,248,63,192,14,6,96,112,24,3,192,24,16,1,128,8,32,0,0,4,32,0,0,4,96,0,0,6,96,0,0,6,96,0,0,6,96,0,0,6,32,1,128,4,32,1,128,4,48,0,0,12,16,0,0,8,24,0,0,24,12,0,0,48,6,0,0,96,3,0,0,192,1,128,1,128,0,192,3,0,0,112,14,0,0,24,24,0,0,12,48,0,0,3,192,0,0,1,128,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,248,63,192,14,6,96,112,24,3,192,24,16,1,128,8,32,0,0,4,32,0,0,4,96,0,0,6,96,0,0,6,96,0,0,6,96,0,0,6,32,0,0,4,32,0,0,4,48,0,0,12,16,0,0,8,24,0,0,24,12,0,0,48,6,0,0,96,3,0,0,192,1,128,1,128,0,192,3,0,0,112,14,0,0,24,24,0,0,12,48,0,0,3,192,0,0,1,128,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,248,63,192,14,6,96,112,24,3,192,24,16,1,128,8,32,0,0,4,32,0,0,4,96,0,0,6,96,0,0,6,96,0,0,6,96,0,0,6,32,0,0,4,32,0,0,4,48,0,0,12,16,0,0,8,24,0,0,24,12,0,0,48,6,0,0,96,3,0,0,192,1,128,1,128,0,192,3,0,0,112,14,0,0,24,24,0,0,12,48,0,0,3,192,0,0,1,128,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,248,63,192,14,6,96,112,24,3,192,24,16,1,128,8,32,0,0,4,32,0,0,4,96,0,0,6,96,0,0,6,96,0,0,6,96,0,0,6,32,0,0,4,32,0,0,4,48,0,0,12,16,0,0,8,24,0,0,24,12,0,0,48,6,0,0,96,3,0,0,192,1,128,1,128,0,192,3,0,0,112,14,0,0,24,24,0,0,12,48,0,0,3,192,0,0,1,128,0,0,0,0,0,0,0,0,0}
};
void setup() {
// Initialize the display
display.begin(SSD1306_SWITCHCAPVCC, SCREEN_I2C_ADDR);
display.clearDisplay();
}
void loop() {
// Loop through each frame
for (int frame = 0; frame < sizeof(frames) / sizeof(frames[0]); frame++) {
// Draw the current frame
display.clearDisplay();
for (int i = 0; i < FRAME_HEIGHT; i++) {
for (int j = 0; j < FRAME_WIDTH; j++) {
// Check if the bit is set and draw a pixel
if (pgm_read_byte(&(frames[frame][i * FRAME_WIDTH + j])) != 0) {
display.drawPixel(j, i, WHITE);
}
}
}
// Display the frame
display.display();
delay(FRAME_DELAY);
}
}