#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[] = {
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfc,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xe0,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x80,
0x80,0x07,0x08,0x87,0x10,0x20,0x0c,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
0x84,0x00,0x07,0x08,0x87,0x10,0x20,0x0c,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,
0x3f,0x86,0x00,0x06,0x08,0x87,0x10,0x20,0x0c,0xe3,0xff,0xff,0xff,0xff,0xff,
0xff,0x3f,0x86,0x00,0x06,0x18,0xc7,0x10,0x20,0x0c,0xe3,0xff,0xff,0xff,0xff,
0xff,0xff,0x3f,0x86,0x30,0xc6,0x1f,0xc7,0x10,0x3e,0x0c,0xe3,0xff,0xff,0xff,
0xff,0xff,0xff,0x3f,0x86,0x30,0xc6,0x1f,0xc2,0x10,0x3e,0x0c,0xe3,0xff,0xff,
0xff,0xff,0xff,0xff,0x3f,0x84,0x10,0xc6,0x1f,0xc2,0x10,0x3e,0x0c,0xe3,0xff,
0xff,0xff,0xff,0xff,0xff,0x3f,0x80,0x00,0x06,0x1c,0xc2,0x10,0x30,0x0c,0xe3,
0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0x00,0x07,0x3c,0xe0,0x10,0x30,0x0c,
0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xe0,0x00,0x06,0x3c,0xe0,0x10,0x30,
0x0c,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfc,0x00,0x06,0x3e,0xe0,0x10,
0x30,0x0c,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfe,0x30,0xc6,0x3f,0xe0,
0x10,0x3e,0x0c,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfe,0x30,0x06,0x78,
0xf0,0x10,0x60,0x08,0xe1,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfe,0x30,0x04,
0x78,0xf0,0x10,0x60,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfe,0x30,
0x04,0x78,0xf0,0x10,0x60,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfe,
0x30,0x04,0x78,0xf0,0x10,0xe0,0x01,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff
};

// 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[] = {
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x87,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xfe,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xf8,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xf8,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x30,0xe0,
0x01,0x8c,0x87,0x30,0x80,0x71,0x18,0xfe,0xff,0xff,0xff,0xff,0xff,0x03,0x30,
0xc0,0x01,0x0c,0x87,0x20,0x80,0x60,0x18,0xfe,0xff,0xff,0xff,0xff,0xff,0xc3,
0x30,0x80,0x01,0x0c,0x87,0x20,0x80,0x60,0x18,0xfe,0xff,0xff,0xff,0xff,0xff,
0xc3,0x30,0x80,0x01,0x0c,0x87,0x21,0x80,0x60,0x18,0xfe,0xff,0xff,0xff,0xff,
0xff,0xc3,0x30,0x84,0xe1,0x0f,0x87,0x21,0xfc,0x60,0x18,0xfe,0xff,0xff,0xff,
0xff,0xff,0xc3,0x30,0x0c,0xe1,0x1f,0x82,0x21,0xfc,0x60,0x18,0xfe,0xff,0xff,
0xff,0xff,0xff,0xc3,0x30,0x04,0xe1,0x1f,0xc2,0x21,0xfc,0x60,0x18,0xfe,0xff,
0xff,0xff,0xff,0xff,0x03,0x30,0x80,0x01,0x1e,0xc2,0x21,0xc0,0x60,0x18,0xfe,
0xff,0xff,0xff,0xff,0xff,0x03,0x30,0x80,0x01,0x1e,0xc2,0x21,0xc0,0x60,0x18,
0xfe,0xff,0xff,0xff,0xff,0xff,0x03,0x38,0x80,0x01,0x1e,0xc0,0x21,0xc0,0x60,
0x18,0xfe,0xff,0xff,0xff,0xff,0xff,0x03,0x3c,0x80,0x01,0x3e,0xe0,0x21,0xc0,
0x60,0x18,0xfe,0xff,0xff,0xff,0xff,0xff,0x83,0x3f,0x84,0xc1,0x3f,0xe0,0x21,
0xf8,0x60,0x18,0xfe,0xff,0xff,0xff,0xff,0xff,0xc3,0x3f,0x0c,0xe1,0x3f,0xe0,
0x21,0xfc,0x61,0x18,0xfe,0xff,0xff,0xff,0xff,0xff,0xc3,0x3f,0x0c,0x01,0x3c,
0xe0,0x21,0x80,0x01,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xc3,0x3f,0x0c,0x01,
0x7c,0xf0,0x21,0x80,0x01,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xc3,0x3f,0x0c,
0x01,0x7c,0xf0,0x21,0x80,0x01,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0x3f,
0x0c,0x01,0x7c,0xf0,0x21,0x80,0x03,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff
};

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
}