// simple project using Arduino UNO and 128x64 SSD1306 IIC OLED Display to show battery charging indicator

// created by upir, 2023
// youtube channel: https://www.youtube.com/upir_upir

// YOUTUBE VIDEO: https://youtu.be/caHcaUoQ2kg
// SOURCE files: https://github.com/upiir/arduino_oled_battery_indicator

// Links from the video:
// 72x40 SSD1306 OLED 0.42" Display: https://s.click.aliexpress.com/e/_Ddq0EwJ
// 128x64 SSD1306 OLED Display 1.54": https://s.click.aliexpress.com/e/_DCYdWXb 
// 128x64 SSD1306 OLED Display 0.96": https://s.click.aliexpress.com/e/_DCKdvnh
// 128x64 SSD1306 OLED Display 2.42": https://s.click.aliexpress.com/e/_DFdMoTh
// Arduino UNO: https://s.click.aliexpress.com/e/_AXDw1h
// Arduino breadboard prototyping shield: https://s.click.aliexpress.com/e/_ApbCwx
// Image2cpp (convert array to image): https://javl.github.io/image2cpp/
// Photopea (online graphics editor like Photoshop): https://www.photopea.com/

// Related videos with Arduino UNO and 128x64 OLED screen:
// Arduino + OLED displays playlist: https://www.youtube.com/playlist?list=PLjQRaMdk7pBZ1UV3IL5ol8Qc7R9k-kwXA


#include <Arduino.h> 
#include <U8g2lib.h> // u8g2 library used for drawing on the OLED display

#include <Wire.h> // library requires for IIC communication

// I´m using two different displays, 128x64px in the WOKWI emulation and 72x40px for real Arduino
// Please uncomment the correct initialization line and comment out the other one

U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // initialization for the 128x64px display
//U8G2_SSD1306_72X40_ER_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);// 72x40px display [full framebuffer, size = 360 bytes]


// images below are generated using the image2cpp website

// 'battery_indicator', 70x40px
const unsigned char epd_bitmap_battery_indicator [] PROGMEM = {
	0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf3, 0xff, 0xff, 0xff, 0x7f, 
	0x00, 0x00, 0x00, 0x06, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x06, 0xfb, 0xff, 0xff, 
	0xff, 0xff, 0x00, 0x00, 0x00, 0x06, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x06, 0xfb, 
	0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x06, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 
	0x06, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x06, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x00, 0x06, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x06, 0xfb, 0xff, 0xff, 0xff, 
	0xff, 0x00, 0x00, 0x00, 0x1e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x3e, 0xfb, 0xff, 
	0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x3e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x3e, 
	0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x3e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 
	0x00, 0x3e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x3e, 0xfb, 0xff, 0xff, 0xff, 0xff, 
	0x00, 0x00, 0x00, 0x3e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x3e, 0xfb, 0xff, 0xff, 
	0xff, 0xff, 0x00, 0x00, 0x00, 0x3e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x3e, 0xfb, 
	0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x3e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 
	0x3e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x3e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x00, 0x3e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x1e, 0xfb, 0xff, 0xff, 0xff, 
	0xff, 0x00, 0x00, 0x00, 0x06, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x06, 0xfb, 0xff, 
	0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x06, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x06, 
	0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x06, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 
	0x00, 0x06, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x06, 0xfb, 0xff, 0xff, 0xff, 0xff, 
	0x00, 0x00, 0x00, 0x06, 0xf3, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x06, 0x07, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfc, 
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01
};

// 'battery_outline', 70x40px
const unsigned char epd_bitmap_battery_outline [] PROGMEM = {
	0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
	0xff, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x03, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 
	0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x3e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x03, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x3e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x03, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x03, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x3e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x3e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x03, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 
	0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfc, 
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01
};

// 'blob_02', 32x34px
const unsigned char epd_bitmap_blob_02 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xe0, 0x00, 
	0x01, 0x00, 0xe0, 0x00, 0x01, 0x00, 0xe0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
	0x07, 0xe0, 0x00, 0x00, 0x07, 0xf0, 0x01, 0x00, 0x0f, 0xf0, 0x03, 0x00, 0x1f, 0xf0, 0x01, 0x00, 
	0x3f, 0xf0, 0x03, 0x00, 0x7f, 0x40, 0x01, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 
	0xff, 0x00, 0x60, 0x00, 0xff, 0x00, 0xe0, 0x00, 0x7f, 0x00, 0x40, 0x00, 0x7f, 0x00, 0x00, 0x00, 
	0x7f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
};
// 'blob_03', 32x34px
const unsigned char epd_bitmap_blob_03 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 
	0x01, 0x00, 0x70, 0x00, 0x01, 0x00, 0x70, 0x00, 0x01, 0x00, 0x70, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
	0x07, 0xf0, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x1f, 0xfc, 0x01, 0x00, 0x3f, 0xfc, 0x01, 0x00, 
	0x7f, 0xfc, 0x01, 0x00, 0x7f, 0xf0, 0x01, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x0c, 0x00, 
	0x7f, 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x78, 0x00, 0x7f, 0x00, 0x30, 0x00, 0x3f, 0x00, 0x00, 0x00, 
	0x3f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
};
// 'blob_04', 32x34px
const unsigned char epd_bitmap_blob_04 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
	0x07, 0x7c, 0x00, 0x00, 0x1f, 0x7e, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x7f, 0xff, 0x00, 0x00, 
	0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06, 0x00, 
	0x7f, 0x00, 0x0e, 0x00, 0x3f, 0x00, 0x1c, 0x00, 0x3f, 0x00, 0x08, 0x00, 0x1f, 0x00, 0x00, 0x00, 
	0x1f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 
	0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
};
// 'blob_05', 32x34px
const unsigned char epd_bitmap_blob_05 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x1e, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 
	0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x00, 0x00, 
	0x1f, 0x3e, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 
	0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xe0, 0x07, 0x00, 0x7f, 0x80, 0x07, 0x00, 
	0x3f, 0x00, 0x0f, 0x00, 0x3f, 0x00, 0x0e, 0x00, 0x1f, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 
	0x1f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 
	0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
};
// 'blob_06', 32x34px
const unsigned char epd_bitmap_blob_06 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x20, 
	0x01, 0x00, 0x00, 0x70, 0x03, 0x00, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x07, 0x00, 0x00, 
	0xff, 0x1f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 
	0xff, 0x7f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x7f, 0xfc, 0x03, 0x00, 0x7f, 0xf0, 0x03, 0x00, 
	0x3f, 0xe0, 0x07, 0x00, 0x1f, 0xc0, 0x03, 0x00, 0x1f, 0x80, 0x01, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 
	0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
};
// 'blob_07', 32x34px
const unsigned char epd_bitmap_blob_07 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x80, 0x03, 0x00, 0x01, 0x80, 0x03, 0x00, 0x01, 0x80, 0x03, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 
	0x03, 0x00, 0x00, 0x38, 0x07, 0x00, 0x00, 0x10, 0x0f, 0x00, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 
	0xff, 0x0f, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 
	0xff, 0x3f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, 0x7f, 0xf8, 0x01, 0x00, 
	0x3f, 0xf0, 0x01, 0x00, 0x1f, 0xe0, 0x01, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
	0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
};
// 'blob_08', 32x34px
const unsigned char epd_bitmap_blob_08 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0x00, 0x01, 0xe0, 0x01, 0x00, 0x01, 0xe0, 0x01, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 
	0x07, 0x00, 0x00, 0x0e, 0x1f, 0x00, 0x00, 0x04, 0x7f, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 
	0xff, 0x07, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 
	0xff, 0x1f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, 
	0x0f, 0xf8, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
	0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_09', 32x34px
const unsigned char epd_bitmap_blob_09 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x70, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 
	0x01, 0x70, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 
	0x0f, 0x00, 0x00, 0x07, 0x3f, 0x00, 0x00, 0x02, 0x7f, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 
	0xff, 0x03, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 
	0xff, 0x0f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 
	0x0f, 0x7f, 0x00, 0x00, 0x07, 0x3c, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_10', 32x34px
const unsigned char epd_bitmap_blob_10 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x38, 0x00, 0x00, 0x01, 0x7c, 0x00, 0x00, 0x01, 0x7c, 0x00, 0x00, 
	0x01, 0x7c, 0x00, 0x00, 0x03, 0x38, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x80, 0x00, 
	0x1f, 0x00, 0xc0, 0x01, 0x3f, 0x00, 0x80, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 
	0xff, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 
	0xff, 0x07, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 
	0xff, 0x1f, 0x00, 0x00, 0x07, 0x1e, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_11', 32x34px
const unsigned char epd_bitmap_blob_11 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x01, 0x1e, 0x00, 0x00, 0x01, 0x3e, 0x00, 0x00, 
	0x01, 0x1e, 0x00, 0x00, 0x03, 0x1e, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0xe0, 0x00, 
	0x7f, 0x00, 0xe0, 0x00, 0x7f, 0x00, 0xe0, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 
	0xff, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 
	0xff, 0x07, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 
	0xff, 0x0f, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x70, 
	0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00
};
// 'blob_12', 32x34px
const unsigned char epd_bitmap_blob_12 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x81, 0x0f, 0x00, 0x00, 0x83, 0x0f, 0x00, 0x00, 
	0xef, 0x0f, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x01, 0x38, 0x00, 
	0x7f, 0x00, 0x38, 0x00, 0x7f, 0x00, 0x38, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 
	0x7f, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 
	0xff, 0x03, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 
	0xff, 0x07, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, 0x38, 
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_13', 32x34px
const unsigned char epd_bitmap_blob_13 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x03, 0x00, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 
	0xff, 0x07, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x01, 0x1c, 0x00, 
	0xff, 0x00, 0x1c, 0x00, 0x7f, 0x00, 0x1c, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 
	0x7f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 
	0xff, 0x01, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 
	0xff, 0x01, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, 0x1c, 
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_14', 32x34px
const unsigned char epd_bitmap_blob_14 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 
	0x0f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 
	0xff, 0x03, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x01, 0x07, 0x00, 
	0xff, 0x00, 0x0f, 0x00, 0x7f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 
	0x3f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 
	0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 
	0xff, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x07, 
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_15', 32x34px
const unsigned char epd_bitmap_blob_15 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x1f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 
	0xff, 0x01, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x80, 0x03, 0x00, 
	0x7f, 0x80, 0x03, 0x00, 0x7f, 0x80, 0x03, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 
	0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 
	0x7f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 
	0x7f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x07, 0x00, 0x80, 0x03, 0x03, 0x00, 0x80, 0x03, 0x01, 0x00, 0x80, 0x03, 0x01, 0x00, 0x00, 0x01, 
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_16', 32x34px
const unsigned char epd_bitmap_blob_16 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x1f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 
	0xff, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0xf1, 0x00, 0x00, 
	0x7f, 0xf0, 0x01, 0x00, 0x7f, 0xe0, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 
	0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 
	0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 
	0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x07, 0x00, 0xc0, 0x01, 0x03, 0x00, 0xc0, 0x01, 0x01, 0x00, 0xc0, 0x01, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_17', 32x34px
const unsigned char epd_bitmap_blob_17 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x1f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 
	0x7f, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x00, 0x00, 
	0x7f, 0x7c, 0x00, 0x00, 0x3f, 0x78, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 
	0x1f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 
	0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 
	0x1f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x07, 0x00, 0xe0, 0x00, 0x03, 0x00, 0xf0, 0x00, 0x03, 0x00, 0xe0, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_18', 32x34px
const unsigned char epd_bitmap_blob_18 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 
	0x0f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 
	0x7f, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 
	0xff, 0x3f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 
	0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x38, 0x00, 
	0x07, 0x00, 0x78, 0x00, 0x03, 0x00, 0x78, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_19', 32x34px
const unsigned char epd_bitmap_blob_19 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 
	0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 
	0x7f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 
	0xff, 0x0f, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 
	0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x1c, 0x00, 
	0x03, 0x00, 0x3c, 0x00, 0x03, 0x00, 0x1c, 0x00, 0x01, 0x00, 0x1c, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_21', 32x34px
const unsigned char epd_bitmap_blob_21 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
	0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 
	0x3f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 
	0xff, 0x01, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 
	0x1f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, 0x00, 0x78, 
	0x03, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
	0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x80, 0x07, 0x00, 0x03, 0x80, 0x07, 0x00, 
	0x01, 0x80, 0x0f, 0x00, 0x01, 0x80, 0x07, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_20', 32x34px
const unsigned char epd_bitmap_blob_20 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 
	0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 
	0x3f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 
	0xff, 0x07, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 
	0x1f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 
	0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 
	0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x1f, 0x00, 
	0x03, 0x00, 0x1f, 0x00, 0x01, 0x00, 0x1f, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_22', 32x34px
const unsigned char epd_bitmap_blob_22 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
	0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 
	0x3f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 
	0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 
	0x1f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x1c, 0x03, 0x00, 0x00, 0x1c, 
	0x03, 0x00, 0x00, 0x1c, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
	0x03, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x01, 0x00, 0x01, 0xe0, 0x03, 0x00, 0x01, 0xe0, 0x03, 0x00, 
	0x01, 0xe0, 0x03, 0x00, 0x01, 0xc0, 0x03, 0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_23', 32x34px
const unsigned char epd_bitmap_blob_23 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
	0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 
	0x1f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 
	0x7f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 
	0x1f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x0e, 0x03, 0x00, 0x00, 0x0e, 
	0x01, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x01, 0x00, 0x01, 0xf0, 0x01, 0x00, 0x01, 0xf0, 0x01, 0x00, 
	0x01, 0xf0, 0x01, 0x00, 0x01, 0xf0, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_24', 32x34px
const unsigned char epd_bitmap_blob_24 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x0f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 
	0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 
	0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x07, 
	0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x70, 0x00, 0x00, 0x01, 0xf8, 0x00, 0x00, 0x01, 0xfc, 0x00, 0x00, 0x01, 0xfc, 0x00, 0x00, 
	0x01, 0xfc, 0x00, 0x00, 0x01, 0x78, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_25', 32x34px
const unsigned char epd_bitmap_blob_25 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 
	0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 
	0x1f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0xc0, 0x01, 0x03, 0x00, 0xc0, 0x03, 
	0x01, 0x00, 0xc0, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x3c, 0x00, 0x00, 0x01, 0x7e, 0x00, 0x00, 0x01, 0x7e, 0x00, 0x00, 0x01, 0x7e, 0x00, 0x00, 
	0x01, 0x7e, 0x00, 0x00, 0x01, 0x3c, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_26', 32x34px
const unsigned char epd_bitmap_blob_26 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 
	0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0xe0, 0x00, 0x03, 0x00, 0xe0, 0x00, 
	0x01, 0x00, 0xe0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x00, 0x00, 
	0x01, 0x1f, 0x00, 0x00, 0x81, 0x3f, 0x00, 0x40, 0x81, 0x3f, 0x00, 0xe0, 0x81, 0x3f, 0x00, 0x40, 
	0x01, 0x3f, 0x00, 0x00, 0x01, 0x1e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_27', 32x34px
const unsigned char epd_bitmap_blob_27 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
	0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 
	0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x70, 0x00, 0x03, 0x00, 0x70, 0x00, 
	0x01, 0x00, 0x70, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xc7, 0x0f, 0x00, 0x00, 
	0xff, 0x1f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x20, 0xff, 0x1f, 0x00, 0x70, 0xff, 0x1f, 0x00, 0x20, 
	0xff, 0x0f, 0x00, 0x00, 0x87, 0x07, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_28', 32x34px
const unsigned char epd_bitmap_blob_28 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
	0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
	0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x10, 0x00, 0x03, 0x00, 0x3c, 0x00, 0x03, 0x00, 0x3c, 0x00, 
	0x03, 0x00, 0x3c, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 
	0xff, 0x0f, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x08, 0xff, 0x0f, 0x00, 0x1c, 0xff, 0x0f, 0x00, 0x08, 
	0xff, 0x07, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_29', 32x34px
const unsigned char epd_bitmap_blob_29 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x1e, 0x00, 0x07, 0x00, 0x1e, 0x00, 
	0x1f, 0x00, 0x1e, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 
	0xff, 0x07, 0x00, 0x06, 0xff, 0x07, 0x00, 0x0e, 0xff, 0x07, 0x00, 0x04, 0xff, 0x07, 0x00, 0x00, 
	0xff, 0x03, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'blob_00', 32x34px
const unsigned char epd_bitmap_blob_00 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, 0x07, 0x80, 0x0f, 0x00, 0x0f, 0x80, 0x0f, 0x00, 
	0x3f, 0x00, 0x0f, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 
	0xff, 0x03, 0x00, 0x03, 0xff, 0x03, 0x00, 0x07, 0xff, 0x03, 0x00, 0x02, 0xff, 0x01, 0x00, 0x00, 
	0xff, 0x01, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
};
// 'blob_01', 32x34px
const unsigned char epd_bitmap_blob_01 [] PROGMEM = {
	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 
	0x01, 0x00, 0x80, 0x03, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
	0x03, 0x00, 0x01, 0x00, 0x07, 0xc0, 0x03, 0x00, 0x0f, 0xc0, 0x07, 0x00, 0x1f, 0xc0, 0x07, 0x00, 
	0x3f, 0xc0, 0x07, 0x00, 0x7f, 0x00, 0x02, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 
	0xff, 0x01, 0xc0, 0x00, 0xff, 0x01, 0xc0, 0x01, 0xff, 0x00, 0x80, 0x00, 0xff, 0x00, 0x00, 0x00, 
	0x7f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 
	0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
};

// Array of all bitmaps for convenience. (Total bytes used to store images in PROGMEM = 4800)
const int epd_bitmap_allArray_LEN = 30;
const unsigned char* epd_bitmap_allArray[30] = {
	epd_bitmap_blob_00,
	epd_bitmap_blob_01,
	epd_bitmap_blob_02,
	epd_bitmap_blob_03,
	epd_bitmap_blob_04,
	epd_bitmap_blob_05,
	epd_bitmap_blob_06,
	epd_bitmap_blob_07,
	epd_bitmap_blob_08,
	epd_bitmap_blob_09,
	epd_bitmap_blob_10,
	epd_bitmap_blob_11,
	epd_bitmap_blob_12,
	epd_bitmap_blob_13,
	epd_bitmap_blob_14,
	epd_bitmap_blob_15,
	epd_bitmap_blob_16,
	epd_bitmap_blob_17,
	epd_bitmap_blob_18,
	epd_bitmap_blob_19,
	epd_bitmap_blob_20,
	epd_bitmap_blob_21,
	epd_bitmap_blob_22,
	epd_bitmap_blob_23,
	epd_bitmap_blob_24,
	epd_bitmap_blob_25,
	epd_bitmap_blob_26,
	epd_bitmap_blob_27,
	epd_bitmap_blob_28,
	epd_bitmap_blob_29
};



int battery_fill_perc = 0; // battery fill percentage 0-100%
int anim_frame = 0; // animation frame for the blob / metaballs animation

int xoff = 29;//0;//29;   // x offset for the battery
int yoff = 12;//0;//24;   // y offset for the battery


void setup(void) {
  u8g2.begin(); // start the u8g2 library
}

void loop(void) {
  u8g2.clearBuffer();	// clear the internal memory
	u8g2.setBitmapMode(1); // draw transparent images

  u8g2.drawXBMP(xoff, yoff, 70, 40, epd_bitmap_battery_outline); // draw the image of the outline of the battery icon

  int fill_width = map(battery_fill_perc, 0, 100, 4, 61); // width of the fill rectangle
	u8g2.drawRBox(xoff+3, yoff+3, fill_width, 34, 1); // battery fill, rounded filled rectangle

  u8g2.setClipWindow(xoff+3, yoff+3, xoff + 3 + 61, yoff+3 + 34); // restrict all graphics output to the specified range
	u8g2.drawXBMP(xoff + 3 + fill_width - 1, yoff+3, 32, 34, epd_bitmap_allArray[anim_frame]); // draw blob animation
	u8g2.setMaxClipWindow(); // restore writing to the complete window

  //u8g2.drawFrame(29, 24, 70, 40);  // draw fullscreen rectangle - this was only used for testing

  u8g2.sendBuffer();					// transfer internal memory to the display


  // increase battery fill percentage 0-100
	battery_fill_perc++;
	if (battery_fill_perc > 100) {battery_fill_perc = 0;}

  // current frame for the blob animation, 0-29
	anim_frame = (anim_frame + 1) % 30;
}