#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0 | U8G_I2C_OPT_NO_ACK | U8G_I2C_OPT_FAST); // Fast I2C / TWI
// 'menu', 128x64px
const unsigned char epd_bitmap_menu [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xf0, 0x80, 0x3c, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02,
0x01, 0x80, 0x80, 0x22, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x00, 0x40, 0x22, 0x38, 0x71, 0xe3, 0xc3, 0x87, 0x13, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x02,
0x02, 0x00, 0x40, 0x22, 0x44, 0x89, 0x12, 0x24, 0x48, 0x94, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x00, 0x40, 0x22, 0x04, 0x81, 0x12, 0x24, 0x40, 0x98, 0x22, 0x00, 0x00, 0x00, 0x00, 0x02,
0x02, 0x00, 0x40, 0x22, 0x3c, 0x71, 0x12, 0x24, 0x47, 0x90, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x00, 0x80, 0x22, 0x44, 0x09, 0x12, 0x24, 0x48, 0x90, 0x22, 0x00, 0x00, 0x00, 0x00, 0x02,
0x02, 0x00, 0x80, 0x22, 0x44, 0x89, 0x12, 0x24, 0x48, 0x90, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x01, 0x00, 0x3c, 0x3c, 0x71, 0x13, 0xc3, 0x87, 0x90, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x02,
0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7,
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x41, 0xfe, 0x00, 0x7c, 0x00, 0x00, 0x60, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32,
0x40, 0x02, 0x00, 0x66, 0x00, 0x00, 0x60, 0x06, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x40, 0x02, 0x00, 0x66, 0x3c, 0x66, 0x66, 0x06, 0x03, 0xc7, 0xc3, 0xc3, 0xc6, 0x60, 0x00, 0x32,
0x40, 0x02, 0x00, 0x66, 0x66, 0x6e, 0x6c, 0x06, 0x06, 0x66, 0x66, 0x66, 0x66, 0xe0, 0x00, 0x30,
0x40, 0x02, 0x00, 0x7c, 0x06, 0x70, 0x78, 0x03, 0xc6, 0x66, 0x66, 0x06, 0x67, 0x00, 0x00, 0x32,
0x40, 0x02, 0xe0, 0x60, 0x3e, 0x60, 0x70, 0x00, 0x67, 0xe6, 0x63, 0xc6, 0x66, 0x00, 0x00, 0x30,
0x40, 0x02, 0x00, 0x60, 0x66, 0x60, 0x78, 0x00, 0x66, 0x06, 0x60, 0x66, 0x66, 0x00, 0x00, 0x32,
0x40, 0x02, 0x00, 0x60, 0x66, 0x60, 0x6c, 0x06, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x30,
0x40, 0x06, 0x00, 0x60, 0x3e, 0x60, 0x66, 0x03, 0xc3, 0xc6, 0x63, 0xc3, 0xc6, 0x00, 0x00, 0x32,
0x41, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe2,
0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x00, 0x14, 0x00, 0x7c, 0x00, 0x02, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x24, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x00, 0x44, 0x00, 0x10, 0x89, 0x33, 0xc3, 0x80, 0x80, 0xe2, 0x23, 0xc7, 0x00, 0x00, 0x00, 0x00,
0x00, 0x83, 0xc0, 0x10, 0x89, 0x42, 0x24, 0x40, 0x81, 0x12, 0x24, 0x48, 0x80, 0x00, 0x00, 0x02,
0x03, 0x00, 0x40, 0x10, 0x89, 0x82, 0x24, 0x40, 0x98, 0x12, 0x24, 0x48, 0x80, 0x00, 0x00, 0x00,
0x02, 0x00, 0x40, 0x10, 0x89, 0x02, 0x24, 0x40, 0x88, 0xf2, 0x24, 0x4f, 0x80, 0x00, 0x00, 0x02,
0x02, 0x00, 0x40, 0x10, 0x89, 0x02, 0x24, 0x40, 0x89, 0x12, 0x24, 0x48, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x10, 0x89, 0x02, 0x24, 0x40, 0x89, 0x12, 0x23, 0xc8, 0x80, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x10, 0x71, 0x03, 0xc3, 0x80, 0x78, 0xf1, 0xc0, 0x47, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'icon_dashboard', 16x16px
const unsigned char epd_bitmap_icon_dashboard [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x08, 0x18, 0x08, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04,
0x20, 0x04, 0x20, 0x08, 0x20, 0x08, 0x10, 0x10, 0x10, 0x30, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00
};
// 'icon_parksensor', 16x16px
const unsigned char epd_bitmap_icon_parksensor [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20,
0x00, 0x2e, 0x00, 0x20, 0x00, 0x20, 0x00, 0x60, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'icon_turbogauge', 16x16px
const unsigned char epd_bitmap_icon_turbogauge [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x01, 0x40, 0x02, 0x40, 0x04, 0x40, 0x08, 0x3c,
0x30, 0x04, 0x20, 0x04, 0x20, 0x04, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
const unsigned char epd_bitmap_icon_battery [] PROGMEM = {
0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x01, 0x40, 0x02, 0x40, 0x04, 0x40, 0x08, 0x3c,
0x30, 0x04, 0x20, 0x04, 0x20, 0x04, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
const unsigned char epd_bitmap_icon_gps [] PROGMEM = {
0x00, 0x00, 0x30, 0x30, 0x30, 0x00, 0x01, 0x80, 0x01, 0x40, 0x02, 0x40, 0x04, 0x40, 0x08, 0x3c,
0x30, 0x04, 0x20, 0x04, 0x20, 0x04, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
const unsigned char* icons[5] = {
epd_bitmap_icon_dashboard,
epd_bitmap_icon_parksensor,
epd_bitmap_icon_turbogauge,
epd_bitmap_icon_battery,
epd_bitmap_icon_gps
};
// 'item_scrollbar', 8x64px
const unsigned char epd_bitmap_item_scrollbar [] PROGMEM = {
0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02,
0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02,
0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02,
0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00
};
// 'item_sel_background', 128x22px
const unsigned char epd_bitmap_item_sel_background [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
const unsigned char epd_bitmap_QR [] PROGMEM = {
0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x12, 0x00, 0x00,
0x00, 0x00, 0x08, 0x11, 0x01, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x28, 0x81, 0x12, 0x00, 0x00,
0x00, 0x00, 0x20, 0x28, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x44, 0x20, 0x40, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8,
0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1c, 0x00, 0x18, 0x37, 0x9c, 0xc8, 0x00, 0x38,
0x1c, 0xff, 0x99, 0x00, 0x0c, 0x39, 0xff, 0x38, 0x1c, 0xff, 0x9b, 0x00, 0x0c, 0x39, 0xff, 0x38,
0x1c, 0xc1, 0x9b, 0xc7, 0xff, 0x09, 0x83, 0x38, 0x1c, 0xc1, 0x9f, 0xc6, 0x63, 0x39, 0x83, 0x38,
0x1c, 0xc1, 0x9f, 0xc6, 0x63, 0x39, 0x83, 0x38, 0x1c, 0xc1, 0x9c, 0xfe, 0x7f, 0x09, 0x83, 0x38,
0x1c, 0xff, 0x9b, 0x1f, 0x9c, 0xf9, 0xff, 0x38, 0x1c, 0xff, 0x9b, 0x0f, 0x9c, 0xf9, 0xff, 0x38,
0x1c, 0x00, 0x1b, 0x36, 0x6c, 0xc8, 0x00, 0x38, 0x1f, 0xff, 0xfb, 0x30, 0x6f, 0x3f, 0xff, 0xf8,
0x1f, 0xff, 0xfb, 0x30, 0x4f, 0x3f, 0xff, 0xf8, 0x1f, 0xc1, 0x9b, 0xf8, 0x0c, 0xe0, 0x70, 0x38,
0x1e, 0xc3, 0xe7, 0x03, 0xff, 0xe2, 0x3f, 0x38, 0x1c, 0xc7, 0xe7, 0x07, 0xff, 0xe2, 0x1f, 0x78,
0x1c, 0xff, 0x98, 0xff, 0x9f, 0xe1, 0xe3, 0xf8, 0x1f, 0x1e, 0x67, 0x1e, 0x7c, 0x01, 0xe4, 0xf8,
0x1f, 0x0e, 0x67, 0x0e, 0x7c, 0x01, 0xec, 0xf8, 0x1f, 0x01, 0x98, 0xc0, 0x70, 0xc6, 0x70, 0x38,
0x1f, 0xcf, 0xe1, 0xc8, 0xe7, 0x01, 0x84, 0x38, 0x1f, 0xcf, 0xe3, 0xc9, 0xcf, 0x01, 0x8c, 0x38,
0x1f, 0x30, 0x1c, 0xc7, 0x8f, 0xce, 0x7f, 0xf8, 0x1e, 0x32, 0x79, 0x01, 0xfe, 0xfd, 0x8c, 0x78,
0x1e, 0x32, 0x73, 0x01, 0xfc, 0xf9, 0x84, 0x38, 0x1f, 0xc9, 0x87, 0xf9, 0xec, 0xfe, 0x63, 0x38,
0x1e, 0x38, 0x46, 0xf1, 0x8c, 0x00, 0x00, 0x38, 0x1c, 0x3c, 0x6c, 0xe1, 0x84, 0x00, 0x00, 0x38,
0x1c, 0xfe, 0x1c, 0xc1, 0xe3, 0xc9, 0xc3, 0xf8, 0x1c, 0xc7, 0xff, 0x02, 0x03, 0xc8, 0x1c, 0x78,
0x1c, 0xc3, 0xff, 0x02, 0x03, 0xc8, 0x1c, 0x38, 0x1c, 0xf9, 0x9f, 0xc1, 0xfc, 0xc0, 0x13, 0xf8,
0x1f, 0xff, 0xf8, 0xc1, 0x8c, 0x0f, 0x04, 0x78, 0x1f, 0xff, 0xf8, 0xc1, 0x8c, 0x0f, 0x8c, 0x38,
0x1c, 0x00, 0x1c, 0x36, 0x6c, 0x09, 0x9c, 0xf8, 0x1c, 0x7f, 0x1c, 0x70, 0x70, 0x0f, 0x8f, 0xf8,
0x1c, 0xff, 0x9c, 0xf0, 0x73, 0x0f, 0x8f, 0xf8, 0x1c, 0xc1, 0x98, 0xf9, 0x84, 0xc0, 0x03, 0xf8,
0x1c, 0xc1, 0x99, 0xf8, 0x0e, 0x00, 0x03, 0xf8, 0x1c, 0xc1, 0x9b, 0xf8, 0x0f, 0x06, 0x43, 0xf8,
0x1c, 0xc1, 0x98, 0xc6, 0x7c, 0x00, 0x00, 0xf8, 0x1c, 0xe3, 0x98, 0x00, 0xf8, 0x00, 0x00, 0xf8,
0x1c, 0xff, 0x9c, 0x39, 0xf0, 0x09, 0x8c, 0xf8, 0x1c, 0x00, 0x1f, 0xce, 0x03, 0x21, 0x9f, 0xf8,
0x1e, 0x00, 0x3f, 0xdf, 0x03, 0x71, 0xbf, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8,
0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03
};
#define BUTTON_UP_PIN 12
#define BUTTON_SELECT_PIN 8
#define BUTTON_DOWN_PIN 4
const int NUM_ITEMS = 5;
char menu_items[NUM_ITEMS][20] = {
"Dashboard",
"Park Sensor",
"Turbo Gauge",
"Battery",
"GPS Speed"
};
int item_selected = 0;
int item_sel_prev;
int item_sel_next;
int button_up_clicked = 0;
int button_down_clicked = 0;
int button_select_clicked = 0;
int current_screen =0;
void setup() {
pinMode(BUTTON_UP_PIN, INPUT_PULLUP);
pinMode(BUTTON_SELECT_PIN, INPUT_PULLUP);
pinMode(BUTTON_DOWN_PIN, INPUT_PULLUP);
Serial.begin(115200); // Any baud rate should work
u8g.setFont(u8g_font_tpssb);
u8g.setColorIndex(1);
}
void loop() {
if (current_screen ==0) {
if (digitalRead(BUTTON_UP_PIN) == LOW && button_up_clicked == 0 ) {
button_up_clicked = 1;
item_selected = item_selected - 1;
if (item_selected<0) item_selected = NUM_ITEMS -1;
}
if (digitalRead(BUTTON_DOWN_PIN) == LOW && button_down_clicked == 0 ) {
button_down_clicked = 1;
item_selected = item_selected + 1;
if (item_selected>=5) item_selected = 0;
}
if (digitalRead(BUTTON_UP_PIN) == HIGH && button_up_clicked == 1 ) {
button_up_clicked =0;
}
if (digitalRead(BUTTON_DOWN_PIN) == HIGH && button_down_clicked == 1 ) {
button_down_clicked =0;
}
}
if (digitalRead(BUTTON_SELECT_PIN) == LOW && button_select_clicked == 0 ) {
button_select_clicked = 1;
if (current_screen == 0) {current_screen = 1;} // menu items screen --> screenshots screen
else if (current_screen == 1) {current_screen = 2;} // screenshots screen --> qr codes screen
else {current_screen = 0;} // qr codes screen --> menu items screen
}
if ((digitalRead(BUTTON_SELECT_PIN) == HIGH) && (button_select_clicked == 1)) { // unclick
button_select_clicked = 0;
}
item_sel_prev = item_selected - 1;
if (item_sel_prev <0) {item_sel_prev = NUM_ITEMS - 1;}
item_sel_next = item_selected + 1;
if (item_sel_next >= NUM_ITEMS) {item_sel_next = 0;}
u8g.firstPage();
do {
if (current_screen ==0) {
u8g.setFont(u8g_font_7x14);
u8g.drawStr(26, 15, menu_items[item_sel_prev]);
u8g.drawBitmapP( 4, 2, 16/8, 16, icons[item_sel_prev]);
u8g.setFont(u8g_font_7x14B);
u8g.drawStr(26, 37, menu_items[item_selected]);
u8g.drawBitmapP( 4, 24, 16/8, 16, icons[item_selected]);
u8g.setFont(u8g_font_7x14);
u8g.drawStr(26, 59, menu_items[item_sel_next]);
u8g.drawBitmapP( 4, 46, 16/8, 16, icons[item_sel_next]);
u8g.drawBitmapP( 0, 22, 128/8, 21, epd_bitmap_item_sel_background);
u8g.drawBitmapP( 120, 0, 8/8, 64, epd_bitmap_item_scrollbar);
}
else if (current_screen ==1) {
u8g.drawBitmapP( 32, 0, 64/8, 64, epd_bitmap_QR);
}
else if (current_screen ==2) {
u8g.drawBitmapP( 0, 0, 128/8, 64, epd_bitmap_item_sel_background);
}
} while ( u8g.nextPage() );
}
boolean ButtonIsDown(uint8_t p)
{
int reading = digitalRead(p);
delay(10);
return reading ==LOW && digitalRead(p) == LOW;
}