#include <Wire.h>
#include <U8g2lib.h>

// Setup for the 128x64 OLED using I2C (SDA, SCL) connection
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/U8X8_PIN_NONE);

// Include the xbm image data for frame 0
#define frame_frame_0_width 128
#define frame_frame_0_height 64
static unsigned char frame_frame_0_bits[] = {
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x07,0xfc,0x00,0xff,
0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x1f,0xfe,0x83,
0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x3f,0x00,0xff,0x1f,0xff,
0x83,0xff,0xff,0x0f,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x3f,0xbe,
0xff,0xc7,0xff,0xff,0x0f,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x3c,
0xbc,0x8f,0xcf,0x0f,0xf0,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
0xfc,0x9f,0x07,0x8f,0x1f,0xf0,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
0x00,0xfc,0x9f,0x07,0x8f,0x7f,0xf0,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,
0x3f,0x00,0xfc,0x8f,0x07,0x0f,0x7e,0xf0,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,
0xff,0x3f,0x00,0xfc,0x87,0x8f,0x07,0x7c,0xf0,0x00,0xe0,0xff,0xff,0xff,0xff,
0xff,0xff,0x3f,0x00,0x3c,0x00,0xff,0xff,0x7f,0xf0,0x00,0xe0,0xff,0xff,0xff,
0xff,0xff,0xff,0x3f,0x00,0x3c,0x00,0xff,0xfb,0x7f,0xf0,0x00,0xe0,0xff,0xff,
0xff,0xff,0xff,0xff,0x3f,0x00,0x3c,0x00,0xfe,0xf9,0x7f,0xf0,0x00,0xe0,0xff,
0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x3c,0x00,0xf8,0xf8,0x1f,0xf0,0x00,0xe0,
0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xf0,0x07,0x3f,0xfc,0x87,
0xff,0x0f,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xfc,0xc7,0x7f,0xfc,
0x8f,0xff,0x0f,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xfe,0xc7,0xff,
0xfc,0x9f,0xff,0x0f,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xfe,0xe7,
0xff,0xfd,0xbf,0xff,0x0f,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x1f,
0xf0,0xf1,0x3d,0xbe,0x07,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
0x0f,0xf0,0xe0,0x3d,0xbc,0xff,0x03,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
0x00,0x0f,0xf0,0xe0,0x3d,0xbc,0xff,0x03,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,
0x3f,0x00,0x0f,0xf0,0xe0,0x3d,0xbc,0xff,0x03,0xe0,0xff,0xff,0xff,0x00,0x00,
0x00,0x00,0x00,0x1f,0xe0,0xf1,0x3d,0xbe,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xfe,0xe7,0xff,0xfc,0xbf,0xff,0x0f,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xfc,0xc7,0xff,0xfc,0x9f,0xff,0x0f,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x87,0x7f,0xfc,0x8f,0xff,0x0f,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x07,0x1f,0xfc,0x83,0xff,0x0f,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00
};

// Include the xbm image data for frame 1
#define frame_frame_1_width 128
#define frame_frame_1_height 64
static unsigned char frame_frame_1_bits[] = {
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xfc,0x3f,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
0x00,0xfe,0xff,0x03,0xe0,0x1f,0x00,0xfe,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
0x00,0x00,0xfe,0xff,0x07,0xf8,0x3f,0x00,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,
0x00,0x00,0x00,0xfe,0xff,0x0f,0xfc,0xff,0x80,0xff,0xff,0xff,0x3f,0x00,0x00,
0x00,0x00,0x00,0x00,0xfe,0xff,0x1f,0xfe,0xff,0xc0,0xff,0xff,0xff,0x3f,0x00,
0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x1f,0xff,0xff,0xc1,0xff,0xff,0xff,0x3f,
0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x81,0x1f,0xff,0xff,0xc3,0xff,0xff,0xff,
0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x81,0x1f,0x3f,0xf8,0xc3,0x7f,0x00,
0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x9f,0x1f,0xf0,0xc3,0xff,
0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x9f,0x1f,0xf0,0x83,
0xff,0x03,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x8f,0x1f,0xf0,
0x03,0xff,0x07,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x8f,0x1f,
0xf0,0x03,0xfe,0x07,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x83,
0x3f,0xf0,0x03,0xf8,0x0f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
0x00,0x7f,0xf8,0x03,0xf0,0x0f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
0x01,0x00,0xff,0xff,0xfd,0xff,0x0f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xf8,0x01,0x00,0xfe,0xff,0xfd,0xff,0x0f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xf8,0x01,0x00,0xfe,0xff,0xfc,0xff,0x07,0xfc,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xf8,0x01,0x00,0xfc,0x7f,0xfc,0xff,0x07,0xfc,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xf8,0x01,0x00,0xf0,0x3f,0xfc,0xff,0x03,0xfc,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xf8,0x01,0x00,0x80,0x07,0xfc,0xff,0x00,0xfc,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x01,0x00,0x00,0xfe,0x00,0xf0,0xff,
0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x03,0xfe,0x01,0xff,0x1f,0xf0,
0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x83,0xff,0x07,0xff,0x3f,
0xf0,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xc3,0xff,0x0f,0xff,
0x7f,0xf0,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xe3,0xff,0x1f,
0xff,0xff,0xf0,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xf3,0xff,
0x1f,0xff,0xff,0xf1,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xf1,
0xff,0x3f,0xff,0xff,0xf1,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
0xf0,0x83,0x3f,0x3f,0xf8,0xf3,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,
0x00,0xf8,0x03,0x3f,0x3f,0xf0,0xf3,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
0x7e,0x00,0xf8,0x01,0x3f,0x3f,0xf0,0xf3,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
0x00,0x7e,0x00,0xf8,0x01,0x7e,0x3f,0xf0,0xf3,0xff,0x07,0x00,0x00,0x00,0x00,
0x00,0x00,0x7e,0x00,0xf8,0x01,0x3f,0x3f,0xf0,0xf3,0xff,0x07,0x00,0x00,0x00,
0x00,0x00,0x00,0xfe,0x00,0xf8,0x03,0x3f,0x3f,0xf8,0xf3,0xff,0x03,0x00,0x00,
0x00,0x00,0x00,0x00,0xfc,0x01,0xf0,0x87,0x3f,0x3f,0xfc,0xf3,0x03,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xf3,0xff,0x3f,0xff,0xff,0xf1,0xff,0x3f,
0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xe3,0xff,0x1f,0xff,0xff,0xf1,0xff,
0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xe3,0xff,0x0f,0xff,0xff,0xf0,
0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xc3,0xff,0x07,0xff,0x7f,
0xf0,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x03,0xff,0x03,0xff,
0x3f,0xf0,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x03,0x78,0x00,
0xff,0x07,0xf0,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00
};

void setup() {
  // Initialisation de l'écran
  u8g2.begin();
}

void loop() {
  // Affichage de la première image (frame 0)
  u8g2.clearBuffer();                // Efface le buffer
  u8g2.drawXBMP(0, 0, frame_frame_0_width, frame_frame_0_height, frame_frame_0_bits);
  u8g2.sendBuffer();                  // Envoie le contenu du buffer à l'écran
  delay(200);                        // Attend 2 secondes

  // Affichage de la deuxième image (frame 1)
  u8g2.clearBuffer();                // Efface le buffer (nécessaire pour afficher la nouvelle image)
  u8g2.drawXBMP(0, 0, frame_frame_1_width, frame_frame_1_height, frame_frame_1_bits);
  u8g2.sendBuffer();                  // Envoie le contenu du buffer à l'écran
  delay(200);                        // Attend 2 secondes
}