#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_I2C_ADDR 0x3C // 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(128, 64, &Wire, OLED_RST_PIN);
// OLED Animation: gear
// Code auto-generated by https://wokwi.com/animator, graphics by icons8.com
#define FRAME_DELAY (42)
#define FRAME_WIDTH (32)
#define FRAME_HEIGHT (32)
#define FRAME_COUNT (sizeof(frames) / sizeof(frames[0]))
int buttonPin = 2;
int buttonState = 0;
const byte PROGMEM frames[][128] = {
{0,0,0,0,0,3,192,0,0,7,192,0,0,6,96,0,1,4,32,128,3,132,33,192,6,124,62,96,12,48,12,48,4,0,0,32,2,0,0,64,3,0,0,192,3,3,192,192,2,14,96,64,62,8,16,124,112,16,8,14,96,16,8,6,96,16,8,6,120,16,8,30,30,8,16,120,2,12,48,64,3,3,192,192,3,0,0,192,2,0,0,64,4,0,0,32,12,32,12,48,4,124,62,32,3,132,33,192,1,4,32,128,0,6,96,0,0,6,64,0,0,3,192,0,0,0,0,0},
{0,0,0,0,0,3,192,0,0,3,224,0,0,2,32,0,1,134,32,0,3,198,33,192,6,124,63,96,4,16,14,48,6,0,0,48,3,0,0,96,3,0,0,192,2,3,192,192,2,12,48,64,62,8,16,96,96,16,8,62,96,16,8,6,96,16,8,6,124,16,8,6,14,8,16,124,2,12,48,64,3,3,192,192,3,0,0,128,6,0,0,64,12,0,0,96,12,112,8,32,4,252,62,32,3,132,99,192,0,4,97,128,0,4,64,0,0,6,192,0,0,3,192,0,0,0,0,0},
{0,0,0,0,0,1,192,0,0,3,224,0,0,2,32,0,1,130,32,0,3,198,48,192,6,60,27,96,6,0,6,48,2,0,0,48,3,0,0,32,1,0,0,64,2,3,192,192,6,12,48,64,124,8,16,96,96,16,8,60,96,16,8,6,96,16,8,6,60,16,8,6,6,8,16,62,2,12,48,112,2,7,192,192,6,0,0,128,4,0,0,192,12,0,0,64,12,96,0,96,6,216,60,96,3,12,99,192,0,4,65,128,0,4,64,0,0,4,192,0,0,7,128,0,0,0,0,0},
{0,0,0,0,0,1,224,0,0,1,240,0,0,3,48,0,1,194,48,0,7,102,16,192,6,60,25,224,6,0,15,48,3,0,0,16,1,0,0,48,1,0,0,96,2,3,192,64,62,12,112,64,112,8,16,96,96,16,8,120,96,16,8,14,96,16,8,6,28,16,8,6,6,8,16,6,2,12,48,124,2,3,224,192,6,0,0,128,12,0,0,128,8,0,0,192,12,240,0,96,7,152,60,96,3,8,102,192,0,8,67,128,0,12,192,0,0,12,128,0,0,7,128,0,0,0,0,0},
{0,0,0,0,0,0,224,0,0,1,240,0,0,129,16,0,1,195,16,0,3,98,16,64,6,30,25,224,2,0,7,48,3,0,0,24,1,0,0,48,1,0,0,96,3,3,192,64,62,12,112,64,96,8,16,64,96,16,8,96,96,16,8,30,120,16,8,6,12,16,8,6,6,8,16,6,2,14,48,124,2,3,192,192,4,0,0,128,12,0,0,128,24,0,0,192,12,240,0,64,7,184,124,96,2,8,70,192,0,8,195,128,0,8,129,0,0,13,128,0,0,7,0,0,0,0,0,0},
{0,0,0,0,0,0,192,0,0,1,240,0,0,193,16,0,1,225,16,0,3,51,16,0,2,30,24,224,3,0,15,176,1,0,2,24,1,128,0,24,1,0,0,48,3,3,192,96,62,12,96,64,96,8,16,96,96,16,8,96,96,16,8,60,60,16,8,6,6,16,8,6,6,8,16,6,2,14,48,124,6,3,192,192,12,0,0,128,24,0,1,128,24,64,0,128,13,240,0,192,7,24,120,64,0,8,236,192,0,8,135,128,0,8,131,0,0,9,128,0,0,3,0,0,0,0,0,0},
{0,0,0,0,0,0,192,0,0,0,248,0,0,193,152,0,1,225,24,0,3,51,24,0,3,30,24,96,1,0,15,240,1,128,2,24,1,128,0,24,1,0,0,48,63,7,192,96,62,12,112,64,96,8,16,96,96,16,8,96,112,16,8,56,28,16,8,14,6,16,8,6,6,8,16,6,2,14,48,4,6,7,192,252,12,0,0,128,24,0,1,128,24,64,1,128,15,240,0,128,6,24,56,192,0,24,204,192,0,24,135,128,0,25,131,0,0,31,0,0,0,3,0,0,0,0,0,0},
{0,0,0,0,0,0,64,0,0,0,248,0,0,224,136,0,1,177,136,0,3,27,8,0,1,14,8,96,1,0,15,240,0,128,3,24,1,128,0,8,1,0,0,24,63,3,192,48,32,12,48,96,96,8,16,96,96,16,8,96,56,16,8,48,12,16,8,28,6,16,24,6,6,8,16,4,6,12,48,4,12,3,192,252,24,0,0,128,16,0,1,128,24,192,1,128,15,224,0,128,4,16,48,128,0,16,248,192,0,17,141,128,0,17,7,0,0,31,0,0,0,2,0,0,0,0,0,0},
{0,0,0,0,0,0,96,0,0,0,248,0,0,224,136,0,1,176,136,0,1,25,136,0,1,15,12,0,1,128,14,240,0,128,3,152,1,128,0,8,1,0,0,24,63,3,192,48,32,12,48,96,96,8,16,64,96,16,8,96,60,16,8,32,4,16,8,60,4,16,24,6,6,8,16,6,6,12,48,4,12,3,192,252,24,0,0,248,16,0,1,128,25,192,1,0,15,112,1,128,0,16,240,128,0,17,248,128,0,17,13,128,0,17,7,0,0,30,0,0,0,6,0,0,0,0,0,0},
{0,0,0,0,0,0,32,0,0,32,124,0,0,240,204,0,1,152,140,0,1,13,140,0,1,135,12,0,0,128,6,112,0,128,3,216,1,128,0,8,63,0,0,8,62,7,192,24,32,12,112,96,96,8,16,96,48,16,8,96,28,16,8,32,4,16,8,56,4,16,8,12,6,8,16,6,12,14,48,4,24,3,192,124,48,0,0,248,16,0,1,128,27,192,1,0,14,96,1,0,0,48,113,128,0,49,240,128,0,49,25,128,0,51,15,0,0,62,4,0,0,4,0,0,0,0,0,0},
{0,0,0,0,0,0,32,0,0,32,124,0,0,240,68,0,1,152,196,0,1,141,132,0,0,135,4,0,0,128,6,48,0,192,3,248,1,128,1,8,63,0,0,12,32,3,192,24,32,12,48,48,96,8,16,96,56,24,8,96,12,16,8,32,4,16,8,48,4,16,24,28,6,8,16,6,12,12,112,4,24,3,192,4,48,0,0,252,16,128,1,128,31,192,3,0,12,96,1,0,0,32,97,0,0,33,241,128,0,35,25,128,0,34,15,0,0,62,4,0,0,4,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,48,60,0,0,248,102,0,1,136,68,0,0,143,132,0,0,135,4,0,0,192,6,16,0,192,3,248,1,128,1,136,63,0,0,12,32,3,192,12,32,12,48,48,112,8,16,96,28,24,8,96,4,16,8,32,4,16,8,32,6,16,24,56,6,8,16,14,24,4,48,4,48,3,192,4,48,0,0,252,17,128,1,128,31,192,3,0,8,96,3,0,0,32,97,0,0,33,241,0,0,34,17,128,0,102,31,0,0,60,12,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,48,60,0,0,248,102,0,0,140,70,0,0,135,198,0,0,195,132,0,0,64,6,0,0,192,3,120,29,128,1,200,63,0,0,12,32,3,192,12,32,4,112,24,48,8,16,48,12,24,8,96,4,16,8,32,4,16,8,32,6,16,24,56,12,8,16,12,24,14,112,4,48,3,192,4,48,0,0,236,19,128,1,248,31,192,3,0,0,96,2,0,0,32,67,0,0,99,225,0,0,98,49,0,0,102,31,0,0,60,12,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,56,60,0,0,232,38,0,0,132,98,0,0,199,194,0,0,67,134,0,0,64,6,0,0,192,3,56,31,128,1,248,51,0,0,12,32,3,192,4,32,12,112,28,56,8,16,48,12,24,8,96,4,16,8,32,4,16,8,32,4,16,24,48,12,8,16,28,56,14,48,4,32,3,192,4,48,0,0,204,31,128,1,248,28,192,3,0,0,96,2,0,0,96,2,0,0,67,227,0,0,70,51,0,0,100,23,0,0,56,28,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,56,28,0,0,236,55,0,0,68,34,0,0,71,226,0,0,65,130,0,0,64,2,0,24,192,3,24,31,128,1,248,48,0,0,12,32,3,192,4,48,12,112,12,24,8,16,24,4,24,8,32,4,16,8,32,4,16,8,32,4,16,24,32,24,8,16,24,48,14,48,12,32,3,192,4,48,0,0,12,31,128,1,248,16,192,3,8,0,64,2,0,0,64,2,0,0,71,226,0,0,68,34,0,0,236,55,0,0,56,28,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,56,28,0,0,100,23,0,0,70,35,0,0,67,227,0,0,97,194,0,0,96,2,0,28,192,3,0,31,128,1,248,48,0,0,204,32,3,192,4,56,12,112,4,12,8,16,28,6,24,8,48,4,16,8,32,4,16,8,32,12,16,24,96,56,8,16,48,32,14,48,28,32,3,192,4,51,0,0,12,31,128,1,248,0,192,3,56,0,64,6,0,0,64,6,0,0,199,194,0,0,140,98,0,0,232,38,0,0,56,28,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,60,12,0,0,102,31,0,0,98,49,0,0,99,225,0,0,33,195,0,0,96,2,0,30,192,3,0,19,128,1,184,48,0,0,252,48,3,192,4,24,12,32,4,12,8,16,12,6,16,8,48,4,16,8,32,4,16,8,32,12,16,8,96,48,8,16,48,32,12,48,24,32,3,192,12,55,0,0,12,31,128,1,200,0,192,3,248,0,64,6,0,0,192,4,0,0,135,198,0,0,140,70,0,0,248,102,0,0,48,60,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,60,12,0,0,102,31,0,0,34,17,128,0,33,241,0,0,32,225,0,8,96,3,0,31,192,3,0,17,128,1,128,48,0,0,252,48,3,192,4,12,12,48,4,6,8,16,12,6,16,8,56,4,16,8,32,4,16,8,32,28,16,24,96,112,8,16,96,32,12,32,56,32,3,192,12,63,0,0,12,1,128,1,136,0,192,3,248,0,192,6,16,0,134,4,0,0,143,132,0,1,136,68,0,0,240,102,0,0,48,60,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,4,0,0,0,62,4,0,0,34,15,0,0,35,25,128,0,33,177,128,0,32,225,0,12,96,1,0,31,192,3,0,16,128,1,128,48,0,0,252,24,3,192,4,12,12,112,4,6,8,16,6,6,24,8,28,4,16,8,48,12,16,8,32,56,16,24,96,96,8,16,96,32,14,112,48,32,3,192,24,63,0,0,12,1,128,1,8,0,192,3,248,0,128,6,48,0,134,4,0,1,143,132,0,1,152,196,0,0,240,68,0,0,32,124,0,0,0,32,0,0,0,0,0},
{0,0,0,0,0,4,0,0,0,62,4,0,0,51,15,0,0,49,25,128,0,49,176,128,0,48,225,128,14,96,1,0,27,192,1,0,16,0,1,128,48,0,0,252,24,3,192,124,6,12,112,4,6,8,16,6,6,16,8,12,4,16,8,56,28,16,8,32,48,16,8,96,96,8,16,96,32,14,48,96,62,3,192,24,31,0,0,12,1,128,0,8,0,128,3,216,0,128,4,112,1,134,12,0,1,15,140,0,1,152,140,0,0,240,204,0,0,32,124,0,0,0,32,0,0,0,0,0},
{0,0,0,0,0,6,0,0,0,31,0,0,0,17,7,0,0,17,13,128,0,17,152,128,0,48,240,128,15,112,1,128,25,192,1,0,16,0,1,128,24,0,0,128,12,3,192,252,6,12,112,4,6,8,16,6,6,24,8,6,4,16,8,60,60,16,8,32,96,16,24,96,96,8,16,64,32,14,48,96,63,3,192,48,31,0,0,24,1,128,0,8,0,128,3,152,1,128,14,240,1,15,8,0,1,31,136,0,1,176,136,0,0,224,136,0,0,0,120,0,0,0,96,0,0,0,0,0},
{0,0,0,0,0,2,0,0,0,31,0,0,0,17,7,0,0,17,141,128,0,16,216,192,6,16,112,128,15,224,0,128,24,192,1,128,16,0,1,128,24,0,0,128,12,3,192,252,6,12,48,4,6,8,16,6,6,16,8,6,12,16,8,28,56,16,8,48,96,16,24,96,32,8,16,64,32,12,48,96,63,3,192,48,1,0,0,24,1,128,0,8,1,128,3,24,1,0,15,240,1,12,8,32,3,31,8,0,1,177,136,0,0,224,136,0,0,0,248,0,0,0,64,0,0,0,0,0},
{0,0,0,0,0,3,0,0,0,31,0,0,0,25,131,0,0,24,135,128,0,24,204,192,6,16,120,192,15,240,0,128,24,192,1,128,24,0,1,128,12,0,0,128,6,3,192,252,2,12,48,124,6,8,16,6,6,16,8,6,28,16,8,14,112,16,8,56,96,16,24,96,96,8,16,64,32,12,48,64,63,3,224,96,1,0,0,48,1,128,0,24,1,128,2,24,1,0,15,240,3,28,24,96,3,51,24,0,1,225,24,0,0,193,152,0,0,0,248,0,0,0,192,0,0,0,0,0},
{0,0,0,0,0,3,0,0,0,15,128,0,0,8,131,0,0,8,135,128,0,8,204,192,7,24,120,64,13,240,0,192,24,64,0,128,24,0,1,128,12,0,0,128,6,3,192,192,2,12,112,124,6,8,16,4,6,24,8,6,60,16,8,6,96,16,8,60,96,16,8,96,96,8,16,96,62,14,32,64,3,3,192,96,1,0,0,48,1,128,0,24,1,0,2,24,3,0,15,176,2,30,24,224,3,55,16,0,1,225,16,0,0,193,16,0,0,1,240,0,0,0,192,0,0,0,0,0},
{0,0,0,0,0,7,0,0,0,15,128,0,0,8,129,0,0,8,195,128,2,8,70,192,7,152,120,96,12,224,0,64,24,0,0,192,12,0,0,128,4,0,0,128,2,3,192,192,2,12,48,124,6,8,16,6,12,16,8,6,120,16,8,6,96,16,8,30,96,16,8,112,96,8,16,96,62,12,48,64,3,3,192,64,1,0,0,32,1,0,0,48,3,0,0,24,2,0,15,48,6,62,25,224,3,98,16,64,1,195,16,0,0,129,16,0,0,1,176,0,0,0,224,0,0,0,0,0},
{0,0,0,0,0,7,128,0,0,15,128,0,0,12,192,0,0,12,67,128,3,8,102,192,7,152,60,96,12,240,0,64,8,0,0,192,12,0,0,128,6,0,0,128,2,3,192,192,2,14,48,96,6,8,16,14,28,16,8,6,112,16,8,6,96,16,8,14,96,16,8,120,96,24,16,96,62,12,48,64,3,7,192,64,1,0,0,96,1,0,0,48,3,0,0,16,6,0,15,48,6,60,25,224,3,102,16,192,1,194,48,0,0,3,48,0,0,1,48,0,0,1,224,0,0,0,0,0},
{0,0,0,0,0,3,128,0,0,7,192,0,0,4,64,0,0,4,65,128,3,12,99,192,6,248,60,96,12,96,0,96,12,0,0,64,4,0,0,192,2,0,0,128,2,3,192,192,2,14,48,96,6,8,16,62,60,16,8,6,96,16,8,6,96,16,8,6,96,16,8,60,96,8,16,96,14,12,48,64,3,3,224,192,1,0,0,64,3,0,0,32,2,0,0,48,6,0,6,48,6,60,27,224,3,198,48,192,1,130,32,0,0,2,32,0,0,3,32,0,0,1,224,0,0,0,0,0},
{0,0,0,0,0,3,192,0,0,7,192,0,0,4,64,0,0,4,97,128,3,132,99,192,4,252,62,96,12,112,8,32,12,0,0,96,6,0,0,64,3,0,0,128,2,3,192,192,2,12,48,64,6,8,16,124,124,16,8,6,96,16,8,6,96,16,8,6,96,16,8,62,62,8,16,96,2,12,48,64,3,3,192,192,1,0,0,192,2,0,0,96,6,0,0,48,4,16,14,48,4,124,63,32,3,198,33,192,1,134,32,0,0,2,32,0,0,3,96,0,0,3,192,0,0,0,0,0}
};
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, SCREEN_I2C_ADDR);
pinMode(buttonPin, INPUT);
}
int frame = 0;
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
display.clearDisplay();
display.drawBitmap(48, 16, frames[frame], FRAME_WIDTH, FRAME_HEIGHT, 1);
display.display();
frame = (frame + 1) % FRAME_COUNT;
} else {
display.clearDisplay();
display.display();
}
}