//=============================
// Project author:
// NwYt
//
// old prototype (abandoned):
// https://wokwi.com/projects/394282388282505217
//=============================
// Idea:
// a simple streamdeck
//=============================
//checklist
//✔️ display 6 numbers on screen
//✔️ ability to move forward and backward in menu
//✔️ ability to select a number
//✔️ Key assignment (script in python)
//✔️ 4 analogs support to control audio (script in python)
//=============================
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire);
const unsigned char mmenu_select [] 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, 0x00,
0x1f, 0x80, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1f, 0x80, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
const unsigned char mmenu_selected [] 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, 0x00,
0x1f, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1f, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
const unsigned char mmenuPage1 [] 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, 0x00,
0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00,
0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00,
0x00, 0x00, 0x5e, 0x80, 0x00, 0x00, 0x00, 0x2f, 0xf4, 0x00, 0x00, 0x00, 0x05, 0xfe, 0x80, 0x00,
0x00, 0x00, 0x5e, 0x80, 0x00, 0x00, 0x00, 0x2f, 0xf4, 0x00, 0x00, 0x00, 0x05, 0xfe, 0x80, 0x00,
0x00, 0x03, 0x9e, 0x80, 0x00, 0x00, 0x01, 0xcf, 0xf3, 0x80, 0x00, 0x00, 0x39, 0xfe, 0x70, 0x00,
0x00, 0x04, 0x1e, 0x80, 0x00, 0x00, 0x02, 0x0f, 0xf0, 0x40, 0x00, 0x00, 0x41, 0xfe, 0x08, 0x00,
0x00, 0x05, 0xfe, 0x80, 0x00, 0x00, 0x02, 0xf0, 0x0f, 0x40, 0x00, 0x00, 0x5e, 0x01, 0xe8, 0x00,
0x00, 0x05, 0xfe, 0x80, 0x00, 0x00, 0x02, 0xf0, 0x0f, 0x40, 0x00, 0x00, 0x5e, 0x79, 0xe8, 0x00,
0x00, 0x05, 0xfe, 0x80, 0x00, 0x00, 0x02, 0xf0, 0x0f, 0x40, 0x00, 0x00, 0x5e, 0x85, 0xe8, 0x00,
0x00, 0x05, 0xfe, 0x80, 0x00, 0x00, 0x02, 0xf0, 0x0f, 0x40, 0x00, 0x00, 0x5e, 0x85, 0xe8, 0x00,
0x00, 0x04, 0x1e, 0x80, 0x00, 0x00, 0x02, 0x00, 0xf0, 0x40, 0x00, 0x00, 0x40, 0xb9, 0xe8, 0x00,
0x00, 0x03, 0x9e, 0x80, 0x00, 0x00, 0x01, 0xe0, 0xf3, 0x80, 0x00, 0x00, 0x3f, 0x41, 0xe8, 0x00,
0x00, 0x00, 0x5e, 0x80, 0x00, 0x00, 0x00, 0x10, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x08, 0x00,
0x00, 0x00, 0x5e, 0x80, 0x00, 0x00, 0x00, 0x20, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x10, 0x00,
0x00, 0x00, 0x5e, 0x80, 0x00, 0x00, 0x00, 0x2f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x10, 0x00,
0x00, 0x00, 0x5e, 0x80, 0x00, 0x00, 0x00, 0x2f, 0x38, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x08, 0x00,
0x00, 0x00, 0x5e, 0x80, 0x00, 0x00, 0x01, 0xcf, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x41, 0xe8, 0x00,
0x00, 0x00, 0x5e, 0x80, 0x00, 0x00, 0x02, 0x0f, 0x40, 0x00, 0x00, 0x00, 0x40, 0xb9, 0xe8, 0x00,
0x00, 0x00, 0x5e, 0x80, 0x00, 0x00, 0x02, 0xf0, 0x40, 0x00, 0x00, 0x00, 0x5e, 0x85, 0xe8, 0x00,
0x00, 0x00, 0x5e, 0x80, 0x00, 0x00, 0x02, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x5e, 0x85, 0xe8, 0x00,
0x00, 0x03, 0x9e, 0x70, 0x00, 0x00, 0x02, 0xf0, 0x7f, 0x80, 0x00, 0x00, 0x5e, 0x79, 0xe8, 0x00,
0x00, 0x04, 0x1e, 0x08, 0x00, 0x00, 0x02, 0xf0, 0x00, 0x40, 0x00, 0x00, 0x5e, 0x01, 0xe8, 0x00,
0x00, 0x05, 0xff, 0xe8, 0x00, 0x00, 0x02, 0xff, 0xff, 0x40, 0x00, 0x00, 0x41, 0xfe, 0x08, 0x00,
0x00, 0x05, 0xff, 0xe8, 0x00, 0x00, 0x02, 0xff, 0xff, 0x40, 0x00, 0x00, 0x39, 0xfe, 0x70, 0x00,
0x00, 0x05, 0xff, 0xe8, 0x00, 0x00, 0x02, 0xff, 0xff, 0x40, 0x00, 0x00, 0x05, 0xfe, 0x80, 0x00,
0x00, 0x05, 0xff, 0xe8, 0x00, 0x00, 0x02, 0xff, 0xff, 0x40, 0x00, 0x00, 0x05, 0xfe, 0x80, 0x00,
0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00,
0x00, 0x03, 0xff, 0xf0, 0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xe0, 0x00, 0x00, 0x07, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0b, 0xd0, 0x00, 0x00, 0x0b, 0xff, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
0x00, 0x00, 0x0b, 0xd0, 0x00, 0x00, 0x0b, 0xff, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00,
0x00, 0x00, 0x73, 0xd0, 0x00, 0x00, 0x0b, 0xff, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x80, 0x00,
0x00, 0x00, 0x83, 0xd0, 0x00, 0x00, 0x0b, 0xff, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x40, 0x00,
0x00, 0x00, 0xbf, 0xd0, 0x00, 0x00, 0x0b, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x20, 0x00,
0x00, 0x00, 0xbf, 0xd0, 0x00, 0x00, 0x0b, 0xcf, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x90, 0x00,
0x00, 0x07, 0x3f, 0xd0, 0x00, 0x00, 0x0b, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xc8, 0x00,
0x00, 0x08, 0x3f, 0xd0, 0x00, 0x00, 0x0b, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xe4, 0x00,
0x00, 0x0b, 0xc3, 0xd0, 0x00, 0x00, 0x0b, 0xd0, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x9f, 0xf2, 0x00,
0x00, 0x0b, 0xc3, 0xd0, 0x00, 0x00, 0x0b, 0xd0, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1f, 0xf9, 0x00,
0x00, 0x73, 0xc3, 0xd0, 0x00, 0x00, 0x0b, 0xcf, 0xfe, 0x00, 0x00, 0x9f, 0xff, 0xff, 0xfc, 0x80,
0x00, 0x83, 0xc3, 0xd0, 0x00, 0x00, 0x0b, 0xc0, 0x01, 0x00, 0x01, 0x3f, 0xff, 0xff, 0xfe, 0x40,
0x00, 0xbc, 0x03, 0xd0, 0x00, 0x00, 0x08, 0x3f, 0xfd, 0x00, 0x01, 0x7f, 0xff, 0xff, 0xff, 0x40,
0x00, 0xbc, 0x03, 0xd0, 0x00, 0x00, 0x04, 0x3f, 0xfd, 0x00, 0x01, 0x7f, 0xff, 0xff, 0xff, 0x40,
0x00, 0xbc, 0x03, 0xc8, 0x00, 0x00, 0x04, 0x3f, 0xfc, 0xe0, 0x01, 0x3f, 0xff, 0xff, 0xfe, 0x40,
0x00, 0xbc, 0x03, 0xc4, 0x00, 0x00, 0x08, 0x3f, 0xfc, 0x10, 0x00, 0x9f, 0xff, 0xff, 0xfc, 0x80,
0x00, 0xbf, 0xff, 0xf4, 0x00, 0x00, 0x0b, 0x00, 0x03, 0xd0, 0x00, 0x40, 0x00, 0x1f, 0xf9, 0x00,
0x00, 0xbf, 0xff, 0xf4, 0x00, 0x00, 0x0b, 0x00, 0x03, 0xd0, 0x00, 0x3f, 0xff, 0x9f, 0xf2, 0x00,
0x00, 0xbf, 0xff, 0xf4, 0x00, 0x00, 0x0b, 0x00, 0x03, 0xd0, 0x00, 0x00, 0x00, 0x5f, 0xe4, 0x00,
0x00, 0xbf, 0xff, 0xf4, 0x00, 0x00, 0x0b, 0x00, 0x03, 0xd0, 0x00, 0x00, 0x00, 0x5f, 0xc8, 0x00,
0x00, 0x80, 0x03, 0xc4, 0x00, 0x00, 0x08, 0xff, 0xfc, 0x10, 0x00, 0x00, 0x00, 0x5f, 0x90, 0x00,
0x00, 0x7f, 0xf3, 0xc8, 0x00, 0x00, 0x04, 0xff, 0xfc, 0xe0, 0x00, 0x00, 0x00, 0x5f, 0x20, 0x00,
0x00, 0x00, 0x0b, 0xd0, 0x00, 0x00, 0x02, 0xff, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x40, 0x00,
0x00, 0x00, 0x0b, 0xd0, 0x00, 0x00, 0x02, 0xff, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x80, 0x00,
0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00,
0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, 0x01, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
const unsigned char mmenuPage2 [] 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, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xe0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00,
0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x05, 0xfe, 0x80, 0x00, 0x00, 0xbf, 0xff, 0xd0, 0x00,
0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x05, 0xfe, 0x80, 0x00, 0x00, 0xbf, 0xff, 0xd0, 0x00,
0x00, 0x04, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x39, 0xfe, 0x80, 0x00, 0x00, 0xbf, 0xff, 0xd0, 0x00,
0x00, 0x09, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x41, 0xfe, 0x80, 0x00, 0x00, 0xbf, 0xff, 0xd0, 0x00,
0x00, 0x13, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x80, 0x00, 0x00, 0xbc, 0x03, 0xd0, 0x00,
0x00, 0x27, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x7f, 0x00, 0x00, 0x00, 0xbc, 0x03, 0xd0, 0x00,
0x00, 0x4f, 0xe8, 0x00, 0x00, 0x00, 0x03, 0x9e, 0x80, 0x00, 0x00, 0x00, 0xbc, 0x03, 0xd0, 0x00,
0x00, 0x9f, 0xe8, 0x00, 0x00, 0x00, 0x04, 0x1e, 0x80, 0x00, 0x00, 0x00, 0xbc, 0x03, 0xd0, 0x00,
0x01, 0x3f, 0xe7, 0xff, 0xf0, 0x00, 0x05, 0xe0, 0x80, 0x00, 0x00, 0x00, 0xbc, 0x3f, 0xd0, 0x00,
0x02, 0x7f, 0xe0, 0x00, 0x08, 0x00, 0x05, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3c, 0x10, 0x00,
0x04, 0xff, 0xff, 0xff, 0xe4, 0x00, 0x05, 0xe0, 0xfc, 0x00, 0x00, 0x00, 0x60, 0x3c, 0xe0, 0x00,
0x09, 0xff, 0xff, 0xff, 0xf2, 0x00, 0x05, 0xe0, 0x02, 0x00, 0x00, 0x00, 0x10, 0x3d, 0x00, 0x00,
0x0b, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x05, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x17, 0xc1, 0x00, 0x00,
0x0b, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x05, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x17, 0xce, 0x00, 0x00,
0x09, 0xff, 0xff, 0xff, 0xf2, 0x00, 0x05, 0xff, 0xf9, 0xc0, 0x00, 0x00, 0x17, 0xd0, 0x00, 0x00,
0x04, 0xff, 0xff, 0xff, 0xe4, 0x00, 0x05, 0xff, 0xf8, 0x20, 0x00, 0x00, 0x17, 0xd0, 0x00, 0x00,
0x02, 0x7f, 0xe0, 0x00, 0x08, 0x00, 0x05, 0xe0, 0x07, 0xa0, 0x00, 0x00, 0x17, 0xd0, 0x00, 0x00,
0x01, 0x3f, 0xe7, 0xff, 0xf0, 0x00, 0x05, 0xe0, 0x07, 0xa0, 0x00, 0x00, 0x17, 0xd0, 0x00, 0x00,
0x00, 0x9f, 0xe8, 0x00, 0x00, 0x00, 0x05, 0xe0, 0x07, 0xa0, 0x00, 0x00, 0x17, 0xd0, 0x00, 0x00,
0x00, 0x4f, 0xe8, 0x00, 0x00, 0x00, 0x05, 0xe0, 0x07, 0xa0, 0x00, 0x00, 0x17, 0xd0, 0x00, 0x00,
0x00, 0x27, 0xe8, 0x00, 0x00, 0x00, 0x04, 0x1f, 0xf8, 0x20, 0x00, 0x00, 0x17, 0xd0, 0x00, 0x00,
0x00, 0x13, 0xe8, 0x00, 0x00, 0x00, 0x03, 0x9f, 0xf9, 0xc0, 0x00, 0x00, 0x17, 0xd0, 0x00, 0x00,
0x00, 0x09, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xfa, 0x00, 0x00, 0x00, 0x17, 0xd0, 0x00, 0x00,
0x00, 0x04, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xfa, 0x00, 0x00, 0x00, 0x17, 0xd0, 0x00, 0x00,
0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x17, 0xd0, 0x00, 0x00,
0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0x00, 0x00, 0x00, 0x7f, 0xe0, 0x00, 0x00, 0x03, 0xf0, 0x0f, 0xfc, 0x00,
0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x80, 0x10, 0x00, 0x00, 0x04, 0x08, 0x10, 0x02, 0x00,
0x00, 0x01, 0x7f, 0xa0, 0x00, 0x00, 0x00, 0xbf, 0xd0, 0x00, 0x00, 0x05, 0xe8, 0x17, 0xfa, 0x00,
0x00, 0x01, 0x7f, 0xa0, 0x00, 0x00, 0x00, 0xbf, 0xd0, 0x00, 0x00, 0x05, 0xe8, 0x17, 0xfa, 0x00,
0x00, 0x0e, 0x7f, 0x9c, 0x00, 0x00, 0x07, 0x3f, 0xce, 0x00, 0x00, 0x39, 0xe8, 0xe7, 0xf9, 0xc0,
0x00, 0x10, 0x7f, 0x82, 0x00, 0x00, 0x08, 0x3f, 0xc1, 0x00, 0x00, 0x41, 0xe9, 0x07, 0xf8, 0x20,
0x00, 0x17, 0x80, 0x7a, 0x00, 0x00, 0x0b, 0xc0, 0x3d, 0x00, 0x00, 0x5f, 0xe9, 0x78, 0x07, 0xa0,
0x00, 0x17, 0x9e, 0x7a, 0x00, 0x00, 0x0b, 0xcf, 0x3d, 0x00, 0x00, 0x5f, 0xe9, 0x78, 0x07, 0xa0,
0x00, 0x17, 0xa1, 0x7a, 0x00, 0x00, 0x0b, 0xd0, 0xbd, 0x00, 0x00, 0x5f, 0xe9, 0x78, 0x1f, 0xa0,
0x00, 0x17, 0xa1, 0x7a, 0x00, 0x00, 0x0b, 0xd0, 0xbd, 0x00, 0x00, 0x5f, 0xe9, 0x78, 0x1f, 0xa0,
0x00, 0x17, 0x9e, 0x7a, 0x00, 0x00, 0x0b, 0xd0, 0xbd, 0x00, 0x00, 0x41, 0xe9, 0x78, 0x1f, 0xa0,
0x00, 0x17, 0x80, 0x7a, 0x00, 0x00, 0x0b, 0xd0, 0xbd, 0x00, 0x00, 0x39, 0xe9, 0x78, 0x1f, 0xa0,
0x00, 0x10, 0x7f, 0x82, 0x00, 0x00, 0x0b, 0xcf, 0x3d, 0x00, 0x00, 0x05, 0xe9, 0x79, 0xe7, 0xa0,
0x00, 0x08, 0x7f, 0x84, 0x00, 0x00, 0x0b, 0xc0, 0x3d, 0x00, 0x00, 0x05, 0xe9, 0x79, 0xe7, 0xa0,
0x00, 0x08, 0x7f, 0x84, 0x00, 0x00, 0x08, 0x3f, 0xfd, 0x00, 0x00, 0x05, 0xe9, 0x79, 0xe7, 0xa0,
0x00, 0x10, 0x7f, 0x82, 0x00, 0x00, 0x07, 0x3f, 0xfd, 0x00, 0x00, 0x05, 0xe9, 0x79, 0xe7, 0xa0,
0x00, 0x17, 0x80, 0x7a, 0x00, 0x00, 0x00, 0xbf, 0xfd, 0x00, 0x00, 0x05, 0xe9, 0x7e, 0x07, 0xa0,
0x00, 0x17, 0x9e, 0x7a, 0x00, 0x00, 0x00, 0xbf, 0xfd, 0x00, 0x00, 0x05, 0xe9, 0x7e, 0x07, 0xa0,
0x00, 0x17, 0xa1, 0x7a, 0x00, 0x00, 0x00, 0x80, 0x3d, 0x00, 0x00, 0x05, 0xe9, 0x7e, 0x07, 0xa0,
0x00, 0x17, 0xa1, 0x7a, 0x00, 0x00, 0x00, 0x40, 0x3d, 0x00, 0x00, 0x05, 0xe9, 0x7e, 0x07, 0xa0,
0x00, 0x17, 0x9e, 0x7a, 0x00, 0x00, 0x00, 0x40, 0x3d, 0x00, 0x00, 0x39, 0xe6, 0x78, 0x07, 0xa0,
0x00, 0x17, 0x80, 0x7a, 0x00, 0x00, 0x00, 0x80, 0x3d, 0x00, 0x00, 0x41, 0xe0, 0x78, 0x07, 0xa0,
0x00, 0x10, 0x7f, 0x82, 0x00, 0x00, 0x00, 0xbf, 0xc1, 0x00, 0x00, 0x5f, 0xfe, 0x07, 0xf8, 0x20,
0x00, 0x0e, 0x7f, 0x9c, 0x00, 0x00, 0x00, 0xbf, 0xce, 0x00, 0x00, 0x5f, 0xfe, 0x67, 0xf9, 0xc0,
0x00, 0x01, 0x7f, 0xa0, 0x00, 0x00, 0x00, 0xbf, 0xd0, 0x00, 0x00, 0x5f, 0xfe, 0x97, 0xfa, 0x00,
0x00, 0x01, 0x7f, 0xa0, 0x00, 0x00, 0x00, 0xbf, 0xd0, 0x00, 0x00, 0x5f, 0xfe, 0x97, 0xfa, 0x00,
0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x80, 0x10, 0x00, 0x00, 0x40, 0x00, 0x90, 0x02, 0x00,
0x00, 0x00, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x7f, 0xe0, 0x00, 0x00, 0x3f, 0xff, 0x0f, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
struct MenuItem {
int w;
int h;
int value;
};
MenuItem menuItemsPage1[] = {
{0, 0, 1},
{42, 0, 2},
{84, 0, 3},
{0, 32, 4},
{42, 32, 5},
{84, 32, 98},
};
MenuItem menuItemsPage2[] = {
{0, 0, 99},
{42, 0, 6},
{84, 0, 7},
{0, 32, 8},
{42, 32, 9},
{84, 32, 10}
};
MenuItem* currentMenuItems = menuItemsPage1;
const int mallArray_LEN = 4;
const unsigned char* mallArray[4] = {
mmenuPage1,
mmenuPage2,
mmenu_select,
mmenu_selected
};
int numMenuItems = sizeof(menuItemsPage1) / sizeof(MenuItem);
int currentitemW = 0;
int currentitemH = 0;
int BUTTON_NEXT = 2;
int BUTTON_BACK = 3;
int BUTTON_SELECT = 4;
const int analogPins[] = {A0, A1, A2, A3}; // Change these to the pins you have your potentiometers connected to
const int numChannels = sizeof(analogPins) / sizeof(int);
int item_number = 0;
int page_number = 1;
void setup() {
Serial.begin(9600);
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
for (;;); // Don't proceed, loop forever
}
pinMode(BUTTON_NEXT, INPUT_PULLUP);
pinMode(BUTTON_BACK, INPUT_PULLUP);
pinMode(BUTTON_SELECT, INPUT_PULLUP);
drawBitmapAtCurrentPosition(mmenu_select); // Draw the required image
}
void loop() {
// Check for button press
if (digitalRead(BUTTON_NEXT) == LOW) {
currentitemW += 42;
if (currentitemW > 84) {
currentitemH += 32;
currentitemW = 0;
}
if (currentitemH > 32) {
currentitemH = 0;
currentitemW = 0;
}
delay(100);
}
if (digitalRead(BUTTON_BACK) == LOW) {
// Decrement currentitemW to move left
currentitemW -= 42; // Adjust the value based on your cursor movement logic
// Handle wrapping around if necessary
if (currentitemW < 0) {
currentitemH -= 32;
if (currentitemH < 0) {
currentitemH = 32; // Set to the last row
}
currentitemW = 84 - (abs(currentitemW) % 42); // Set to the appropriate column in the previous row
}
delay(100);
}
for (int i = 0; i < numChannels; i++) {
int sensorValue = analogRead(analogPins[i]);
int mappedValue = map(sensorValue, 0, 1023, 0, 100); // Map the value to 0-100
Serial.print(mappedValue);
Serial.print("|");
}
if (digitalRead(BUTTON_SELECT) == LOW) {
for (int i = 0; i < numMenuItems; i++) {
if (currentitemW == currentMenuItems[i].w && currentitemH == currentMenuItems[i].h) {
item_number = currentMenuItems[i].value;
if (item_number == 98) {
// Draw mmenuPage2 and allow selection of menu items 6 to 11
mallArray[0] = mmenuPage2;
currentMenuItems = menuItemsPage2;
numMenuItems = sizeof(menuItemsPage2) / sizeof(MenuItem);
// Reset the menu select to the top left
currentitemW = 0;
currentitemH = 0;
} else if (item_number == 99) {
// Draw mmenuPage1 and allow selection of menu items 0 to 5
mallArray[0] = mmenuPage1;
currentMenuItems = menuItemsPage1;
numMenuItems = sizeof(menuItemsPage1) / sizeof(MenuItem);
// Reset the menu select to the top left
currentitemW = 0;
currentitemH = 0;
}
drawBitmapAtCurrentPosition(mallArray[3]);
if (item_number != 98 && item_number != 99) {
Serial.println(item_number);
}
break;
}
}
}
else {
Serial.println();
}
drawBitmapAtCurrentPosition(mallArray[2]);
}
void drawBitmapAtCurrentPosition(const unsigned char* bitmap) {
display.clearDisplay();
display.drawBitmap(0, 0, mallArray[0], 128, 64, 1);
display.drawBitmap(currentitemW, currentitemH, bitmap, 128, 64, 1);
display.display();
}