T-Watch. Menu, pages, navigation entre écrans avec TFT_eSPI

Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Table des matières

Dans ce tutoriel nous allons apprendre comment créer des menus (et des menus défilants) et naviguer entre les pages d’une application à l’aide de la librairie TFT_eSPI. Ce tutoriel est destiné en priorité aux montres ESP32 TTGO T-Watch de LilyGo. Moyennant quelques petites adaptations du code, vous pourrez l’utiliser pour d’autres projets Arduino avec un écran TFT classique.

 

La librairie TFT_eSPI est très facile à utiliser pour créer des menus et des éléments d’interface.

Il est tout à fait possible d’utiliser conjointement la librairie TFT_eSPI et LVGL dans un projet d’application pour T-Watch.

A LIRE AUSSI :
T-Watch. Mixer les librairies LVGL et TFT_eSPI dans un même projet ESP32

Activer la librairie TFT_eSPI

Par défaut la librairie TFT_eSPI est intégrée et activée par la librairie LilyGoWatch. C’est d’ailleurs le cas quelque soit le modèle de T-Watch que vous utilisé. Il n’y a donc rien à faire de plus.

Au niveau programmation, il est plus facile de déclarer un pointeur vers l’objet au début du projet. De cette façon vous n’aurez pas besoin de re-déclarer à chaque fois la classe pour accéder aux fonctions de la librairie TFT_eSPI

TTGOClass *ttgo; // Pointeur vers l'API des périphériques de la montre
TFT_eSPI *tft;   // Pointeur vers les fonctions de la librairie TFT_eSPI

Dans le setup, on créé les objets ttgo et tft que l’on place dans les pointeurs créés au début du projet

void setup(){  
  ...
  ttgo = TTGOClass::getWatch();
  ttgo->begin();     
  tft = ttgo->tft;
  ...
}

Maintenant, vous pouvez accéder aux fonctions de gestion de l’écran n’importe où dans le projet.

Comment porter du code d’un projet Arduino avec la librairie TFT_eSPI ?

Il est tout à fait possible de porter du code développé pour un Arduino et l’adapter à la T-Watch.

Il faudra simplement remplacer tous les appels aux fonctions qui sont fait avec l’opérateur point (.) par l’opérateur flèche (->).

Préparer les icônes (images) XBM

Avant toute chose, il est nécessaire de convertir les images au format XBM de chaque icônes, et ce pour chaque résolution. En effet, la librairie TFT_eSPI ne propose aucune fonction pour redimensionner les images.

Vous trouverez sur le dépôt GitHub du projet plusieurs icônes aux formats PNG et XBM que vous pouvez utiliser dans vos projets. Elles sont disponibles dans plusieurs résolutions.

Icône Nom du fichier 80×80 32×32 30×30
Menu main menu
WiFi wifi wifi
Bluetooth bluetooth bluetooth
Accéléromètre accel accel
GPS gps gps
Réglages settings settings
Horloge clock clock 1
Musique music music
Outils tools tools
Sortie exit

Il est très facile de fabriquer vos propres icônes monochrome en convertissant une image au format XBM. Lisez ce tutoriel qui explique en détail comment faire.

A LIRE AUSSI :
T-Watch. Afficher des images XBM (TFT_eSPI) et C++ (LVGL). Compatible ESP32, Arduino

Organisation des pages et menus de l’application T-Watch

Bien évidemment, nous n’allons pas développer l’intégralité de l’application dans ce tutoriel. Nous allons nous concentrer sur les menus et la navigation entre les pages (écrans) de l’application que voici.

  • Le haut de la page principale est occupée par une barre d’état. L’icône de gauche permet d’accéder au menu défilant pour accéder à une page de l’application. Le menu de droite est identique. Chaque option est précédée d’un icône de 30×30 pixels monochrome.
  • Au centre de la page, on trouve une icône qui permet d’accéder au menu pleine page
  • Chaque page de l’application affiche simplement le titre dans la barre d’état

 

ttgo t-watch page navigation menu demo tft_espi

Créer un menu en pleine page

Le premier menu que nous allons créer et un menu qui s’affiche en pleine page. Il est constitué de 4 boutons. Ici, pour sortir du menu, une icône est réservée à cette usage. On pourrait également utiliser un bouton ou l’accéléromètre (secouer pour revenir en arrière par exemple).

Pour créé un menu en pleine page, il suffit de dessiner les 4 boutons à leur position à l’aide de la méthode drawXBitmap() dont les paramètres sont les suivants :

  • Origine x, y de l’image
  • Tableau de point de l’image au format XBM (const unsigned char)
  • La largeur et la hauteur de l’image
  • La couleur de l’icône
  • La couleur de fond. En général, il est identique au fond de l’écran. Il suffit d’inverser les couleurs en cas de rendu erroné.

On reste dans une boucle while jusqu’à ce que la variable exitMenu passe à False.

En testant la position du doigt sur l’écran renvoyé par la fonction getTouch(), on peut en déterminer le bouton qui a été touché et renvoyer l’index correspondant.

int toolPageMenu(){
  tft->fillScreen(TFT_BLACK);  // efface la page précédente
  tft->drawXBitmap(25, 25, wifi, icon_width, icon_height, TFT_WHITE, TFT_BLACK);
  tft->drawXBitmap(130, 25, bluetooth, icon_width, icon_height, TFT_WHITE, TFT_BLACK);
  tft->drawXBitmap(25, 130, gps, icon_width, icon_height, TFT_WHITE, TFT_BLACK);
  tft->drawXBitmap(130, 130, menuexit, icon_width, icon_height, TFT_WHITE, TFT_BLACK);

  int16_t x, y, tx, ty;

  int mSelect; 
  // Permet de maintenir la page TFT_eSPI ouverte jusqu'à ce que l'utilisateur touche une option
  boolean exitMenu = false;   
  
  while (!exitMenu) {
    // Attend que l'utilisateur touche l'écran
    if (ttgo->getTouch(x, y)) { 
      while (ttgo->getTouch(tx, ty)) {} 
      int index = 0;
      if ( x < w / 2 && y < h / 2 ) {
        mSelect = 1;
        exitMenu = true;
      } else if ( x > w / 2 && y < h / 2 ) {
        mSelect = 2;
        exitMenu = true;
      } else if ( x < w / 2 && y > h / 2 ) {
        mSelect = 6;
        exitMenu = true;
      } else {
        exitMenu = true;
      } 
    }
  }
  menuOpened = false;

  // Renvoie l'index de la page désirée
  return mSelect;
}

Voici ce qu’on obtient avec cette fonction

ttgo t-watch tft_espi menu full screen

Menu défilant avec icône à gauche (ou pas)

Contrairement à la librairie LVGL, la librairie TFT_eSPI ne “permet” (c’est déjà beaucoup !) que de dessiner des formes géométriques simples. Pour créer un menu vertical défilent, l’astuce consiste à redessiner le menu lorsqu’on touche le haut ou le bas de l’écran.

La fonction displayScrollingMenu() permet de surveiller l’action de l’utilisateur sur l’écran. Ici, le menu est constitué de trois cellules. On récupère les libellés des cellules à l’aide d’un pointeur. Dès que l’utilisateur touche une ligne du menu, on reconstruit celui-ci en modifiant la position du curseur mSelect à l’aide des méthodes createMenuList() ou createMenuListIcon().

refreshMenu().

int displayScrollingMenu(){
  int16_t x, y, tx, ty;
  int mSelect = menuSelected; // l'option sélectionnée, cellule centrale du menu
  boolean exitMenu = false;   // permet de laisser le menu à l'écran
    
  refreshMenu(menuSelected); // affiche le menu défilant vertical
  
  while (!exitMenu) {
    if (ttgo->getTouch(x, y)) { 
      // ON attend que l'écran soit relâché avant de se déplacer
      while (ttgo->getTouch(tx, ty)) {} 
      // L'utilisateur se déplace vers le bas du menu
      if (y >= 160 ) { 
        mSelect += 1;
        if (mSelect == appMax) mSelect = 0;
        refreshMenu(mSelect);
      }
      // L'utilisateur se déplace vers le haut du menu
      if (y <= 80 ) { 
        mSelect -= 1;
        if (mSelect < 0) mSelect = appMax - 1;
        refreshMenu(mSelect);
      }
      // L'utilisateur à sélectionné l'option centrale, on sort du menu et on ouvre la page correspondante
      if (y > 80 && y <160 ) { 
        exitMenu = true;
      }

    }
    delay(5);
  }
  menuOpened = false;
  // Renvoi l'option sélectionnée par l'utilisateur lorsqu'on sort du menu
  return mSelect;
}

La méthode createMenuListIcon() créé un menu défilant vertical. Chaque option est précédée de l’icône de l’application. L’icône n’est rien d’autre qu’une image XBM dessinée avec la méthode drawXBitmap() comme précédemment.

void createMenuListIcon(int mSel) {
  menuOpened = true;
  int curSel = 0;
  // Créé un fond bleu avec une ligne noire au milieu
  ttgo->tft->fillScreen(TFT_BLUE);
  ttgo->tft->fillRect(0, 80, 240, 80, TFT_BLACK);

  // Première ligne du menu déroulant
  if (mSel == 0) curSel = appMax - 1;
  else curSel = mSel - 1;
  
  ttgo->tft->setTextSize(2);
  ttgo->tft->setTextColor(TFT_WHITE);
  ttgo->tft->drawXBitmap(10, 20, getMenuIcon(curSel), 32, 32, TFT_WHITE, TFT_BLUE);
  ttgo->tft->setCursor(50, 30);
  ttgo->tft->println(appName[curSel]);

  // Ligne centrale (option sélectionnée)
  ttgo->tft->setTextSize(3);
  ttgo->tft->setTextColor(TFT_RED);
  ttgo->tft->drawXBitmap(10, 100, getMenuIcon(mSel), 32, 32, TFT_WHITE, TFT_BLACK);
  ttgo->tft->setCursor(50, 110);  // 40
  ttgo->tft->println(appName[mSel]);

  // Dernière ligne du menu
  if (mSel == appMax - 1) curSel = 0;
  else curSel = mSel + 1;

  ttgo->tft->setTextSize(2);
  ttgo->tft->setTextColor(TFT_WHITE);
  ttgo->tft->drawXBitmap(10, 180, getMenuIcon(curSel), 32, 32, TFT_WHITE, TFT_BLUE);
  ttgo->tft->setCursor(50, 190);
  ttgo->tft->print(appName[curSel]);
}

Comment naviguer entre les pages, passer et renvoyer des paramètres ?

Là aussi, la librairie TFT_eSPI n’offre aucune solution avancée pour gérer les pages de l’application ESP32. En fait lorsqu’on passe d’un écran à l’autre sur la montre, on ne fait que reconstruire l’écran de toute pièce à chaque fois.

Chaque page (écran) est une simple fonction C++. Lorsqu’on souhaite passer des paramètres à un écran, il suffit de déclarer des variables ou utiliser des variables globales (attention aux bugs !).

Par exemple ici, on passe l’index de la page affichée qui permettra de récupérer son titre. Pour créer le nouvel écran, on commence par l’effacer avec la couleur de fond souhaitée (ici en noir).

Lisez cet article qui détaille les éléments de base de la librairie TFT_eSPI

A LIRE AUSSI :
T-Watch. Débuter avec la librairie ESP32 TFT_eSPI. Afficher texte, formes, détection tactile
void createPage(int pageindex){
  tft->fillScreen(TFT_BLACK);  // colorie le fond de l'écran en noir
  tft->setTextDatum(TL_DATUM);  
  tft->setTextColor(TFT_WHITE);
  tft->setTextSize(2);
  tft->drawString(appName[pageindex], menuSize + 2 * menuPadding, menuPadding, 1);
  tft->drawFastHLine(0, menuSize + menuPadding, w, TFT_DARKGREY);
  createLeftMenuButton();
  createRightMenuButton();
}

Comme un écran est une simple fonction, on peut renvoyer simplement des paramètres la commande return. C’est ce qu’on fait par exemple pour sélectionner une option du menu.

int displayScrollingMenu(){
  ...
  return mSelect;
}

Code complet du projet

Le code complet du projet est disponible sur GitHub.

logo github

 

  • twatch.ino
  • toolPageMenu.ino
  • icones.h

/* Arduino IDE - un-comment your watch */
#define LILYGO_WATCH_2019_WITH_TOUCH
//#define  LILYGO_WATCH_2019_NO_TOUCH
//#define LILYGO_WATCH_BLOCK
//#define LILYGO_WATCH_2020_V1
#include <LilyGoWatch.h>
#include "icones.h"             

//  Pointeurs 
TTGOClass *ttgo;
TFT_eSPI *tft;

//*************************//
//*       Prototypes      *//
//*************************//
void goToPage(int pageindex);
void createMainPage();
void createPage(int pageindex);
void createLeftMenuButton();
void createRightMenuButton();
String isMenuTouched(int x, int y);
int displayScrollingMenu();
void createMenuList(int mSel);
void createMenuListIcon(int mSel);
const unsigned char* getMenuIcon(int icoIndex);
//*************************//
//*   STATIC VARIABLES    *//
//*************************//
int w, h;           //  résolution de l'écran
int pageindex = 0;  //  page à afficher

#define menuSize 30
#define menuPadding 10
bool menuOpened = false;
//  Pages de l'application
const int appMax = 9; 
String appName[appMax] = {"Main", "WiFi", "Bluetooth", "Accel", "Settings", "Clock", "GPS", "Music", "Tools"}; 

int menuSelected = 0;
String menuType = "list";  //  Type de menu à afficher (liste ou icone)

void setup() {
  Serial.begin(115200);
  // Get ttgo object and set up the display | Récupère l'objet et allume l'écran
  ttgo = TTGOClass::getWatch();
  ttgo->begin();     
  ttgo->openBL();

  //  Accès facile aux fonctions de la librairie TFT 
  tft = ttgo->tft;
  //tft->setRotation(0);
  tft->fillScreen(TFT_BLACK);

  // Récupère le résolution de l'écran
  w = tft->width();     // width  | largeur
  h = tft->height();    // height | hauteur
  
  createMainPage();   //  affiche la page principale au démarrage
}

void loop() {
  // Attend que l'utilisateur touche un bouton de menu
  int16_t x, y, tx, ty;
  if (ttgo->getTouch(x, y)) {
    while (ttgo->getTouch(tx, ty)) {} // wait until you stop touching
    String menuindex = isMenuTouched(x, y);
    // Left menu, scrolling list
    // Menu de gauche, liste défilante
    if  ( menuindex  == "leftmenu" ) {
      menuType = "list";
      menuSelected = displayScrollingMenu();
      goToPage(menuSelected);
    // Ouvre le menu droit (liste avec icone)  
    } else if ( menuindex == "rightmenu" ) {
      Serial.println("right menu ");
      menuType = "icon";
      menuSelected = displayScrollingMenu();
      goToPage(menuSelected);
    // Menu central en pleine page constitué de 4 boutons  
    } else if ( menuindex == "mainmenu" ) { 
      Serial.println("display tool page"); 
      menuSelected = toolPageMenu();
      goToPage(menuSelected);
    }   
  } 
}
//*************************//
//*    Scrolling Menu     *//
//*************************//
// Affiche le menu défilant
int displayScrollingMenu(){
  int16_t x, y, tx, ty;
  int mSelect = menuSelected; // The currently highlighted app
  boolean exitMenu = false;   // used to stay in the menu until user selects app
    
  refreshMenu(menuSelected); //  affiche le menu défilant vertical
  
  while (!exitMenu) {
    if (ttgo->getTouch(x, y)) { // If you have touched something...
      while (ttgo->getTouch(tx, ty)) {} // wait until you stop touching

      // L'utilisateur se déplace vers le bas du menu
      if (y >= 160 ) { 
        mSelect += 1;
        if (mSelect == appMax) mSelect = 0;
        refreshMenu(mSelect);
      }
      // L'utilisateur se déplace vers le haut du menu
      if (y <= 80 ) { 
        mSelect -= 1;
        if (mSelect < 0) mSelect = appMax - 1;
        refreshMenu(mSelect);
      }
      // L'utilisateur à sélectionné l'option centrale, on sort du menu et on ouvre la page correspondante
      if (y > 80 && y <160 ) { 
        exitMenu = true;
      }

    }
    delay(5);
  }
  //Return with mSelect containing the desired mode
  ttgo->tft->fillScreen(TFT_BLACK);
  menuOpened = false;

  return mSelect;
}
//*************************//
//*    Menus Helpers      *//
//*************************//
// L'utilisateur s'est déplacé dans le menu, on reconstruit le menu
void refreshMenu(int selectPosition){
  if ( menuType == "list" ) {
    // List menu | Menu liste
    createMenuList(selectPosition);
  } else {
    // Icon | menu icône
    createMenuListIcon(selectPosition);
  }
}
// Construit les 3 lignes visibles du menu défilant liste
void createMenuList(int mSel) {
  Serial.printf("createMenuList %u", mSel);
  menuOpened = true;
  // Application
  int curSel = 0;   
  // On colorie le fond de l'écran en bleue
  ttgo->tft->fillScreen(TFT_BLUE);
  // The central rectangle in black to simulate the list
  // Le rectangle central en noir pour simuler la liste
  ttgo->tft->fillRect(0, 80, 239, 80, TFT_BLACK);

  // Affiche le libellé des 3 applications à l'écran
  if (mSel == 0) curSel = appMax - 1;
  else curSel = mSel - 1;

  // Première ligne du menu déroulant
  ttgo->tft->setTextSize(2);
  ttgo->tft->setTextColor(TFT_GREEN);
  ttgo->tft->setCursor(50, 30);
  ttgo->tft->println(appName[curSel]);

  // Ligne centrale (option sélectionnée)
  ttgo->tft->setTextSize(3);
  ttgo->tft->setTextColor(TFT_RED);
  ttgo->tft->setCursor(40, 110);
  ttgo->tft->println(appName[mSel]);

  // Dernière ligne du menu
  if (mSel == appMax - 1) curSel = 0;
  else curSel = mSel + 1;

  ttgo->tft->setTextSize(2);
  ttgo->tft->setTextColor(TFT_GREEN);
  ttgo->tft->setCursor(50, 190);
  ttgo->tft->print(appName[curSel]);
}
// Construit les 3 lignes visibles du menu défilant liste avec icône monochrome (fichier XMB)
void createMenuListIcon(int mSel) {
  menuOpened = true;
  int curSel = 0;
  // Créé un fond bleu avec une ligne noire au milieu
  ttgo->tft->fillScreen(TFT_BLUE);
  ttgo->tft->fillRect(0, 80, 240, 80, TFT_BLACK);

  // Première ligne du menu déroulant
  if (mSel == 0) curSel = appMax - 1;
  else curSel = mSel - 1;
  
  ttgo->tft->setTextSize(2);
  ttgo->tft->setTextColor(TFT_WHITE);
  ttgo->tft->drawXBitmap(10, 20, getMenuIcon(curSel), 32, 32, TFT_WHITE, TFT_BLUE);
  ttgo->tft->setCursor(50, 30);
  ttgo->tft->println(appName[curSel]);

  // Ligne centrale (option sélectionnée)
  ttgo->tft->setTextSize(3);
  ttgo->tft->setTextColor(TFT_RED);
  ttgo->tft->drawXBitmap(10, 100, getMenuIcon(mSel), 32, 32, TFT_WHITE, TFT_BLACK);
  ttgo->tft->setCursor(50, 110);  // 40
  ttgo->tft->println(appName[mSel]);

  // Dernière ligne du menu
  if (mSel == appMax - 1) curSel = 0;
  else curSel = mSel + 1;

  ttgo->tft->setTextSize(2);
  ttgo->tft->setTextColor(TFT_WHITE);
  ttgo->tft->drawXBitmap(10, 180, getMenuIcon(curSel), 32, 32, TFT_WHITE, TFT_BLUE);
  ttgo->tft->setCursor(50, 190);
  ttgo->tft->print(appName[curSel]);
}
// Renvoie l'index du menu qui vient d'être touché
String isMenuTouched(int x, int y){
  String menuindex = "no";
  Serial.printf("isMenuTouched at %u:%u \n", x, y);
  if ( x <= menuSize + 2 * menuPadding && y <= menuSize + 2 * menuPadding) {
    menuindex = "leftmenu";
  } else if ( x >= w - 30 - 2 * menuPadding && y <= menuSize + 2 * menuPadding)  {
    menuindex = "rightmenu";
  } else if (x >= w / 2 - icon_width / 2 && x <= w / 2 + icon_width / 2 && y >= h / 2 && y <= h / 2 + icon_height )  {
    menuindex = "mainmenu";
  }
  return menuindex;
}
//*************************//
//*        Pages          *//
//*************************//
// Renvoie le nom de fichier de l'icone du menu
const unsigned char* getMenuIcon(int icoIndex){
  Serial.printf("getMenuIcon %u \n", icoIndex);
  switch (icoIndex) {
    case 0:
      return main32;
      break;
    case 1:
      return wifi32;
      break; 
    case 2:
      return bluetooth32;
      break; 
    case 3:
      return accel32;
      break;      
    case 4:
      return settings32;
      break; 
    case 5:
      return clock32;
      break; 
    case 6:
      return gps32;
      break; 
    case 7:
      return music32;
      break;    
    case 8:
      return tools32;
      break;            
    default:
      return main32;  
  }
}
void goToPage(int pageindex){
  Serial.printf("displayPage %u \n", pageindex);
  switch (pageindex){
    case 0:
      createMainPage();  // Main page  
      break;
    default:
      createPage(pageindex);
  }
}

// Page principale de l'application
void createMainPage(){
  tft->fillScreen(TFT_BLACK);  // Fill background in black | colorie le fond de l'écran en noir
  tft->setTextDatum(MC_DATUM);  
  tft->setTextColor(TFT_WHITE);
  tft->setTextSize(2);
  tft->drawString("Main Page", w / 2, h / 3, 1);
  tft->drawXBitmap(w / 2 - icon_width / 2  , h / 2, menu, icon_width, icon_height, TFT_WHITE, TFT_BLACK);
  createLeftMenuButton();
  createRightMenuButton();
}

// Créé une page lambda de l'application
void createPage(int pageindex){
  tft->fillScreen(TFT_BLACK);  // Fill background in black | colorie le fond de l'écran en noir
  tft->setTextDatum(TL_DATUM);  
  tft->setTextColor(TFT_WHITE);
  tft->setTextSize(2);
  tft->drawString(appName[pageindex], menuSize + 2 * menuPadding, menuPadding, 1);
  tft->drawFastHLine(0, menuSize + menuPadding, w, TFT_DARKGREY);
  createLeftMenuButton();
  createRightMenuButton();
}
void createLeftMenuButton(){
  for (size_t i = 0; i < 3; i++) {
    tft->fillRoundRect(menuPadding, menuPadding + i*8, menuSize, 4, 2, TFT_WHITE);
  }
}
void createRightMenuButton(){
    tft->drawXBitmap(w - 30 - menuPadding, menuPadding , menu30, 30, 30, TFT_WHITE, TFT_BLACK);
}

// Menu central en plein écran avec uniquement 4 boutons (wifi, bluetooth, GPS, sortie)
int toolPageMenu(){
  tft->fillScreen(TFT_BLACK);  // colorie le fond de l'écran en noir
  tft->drawXBitmap(25, 25, wifi, icon_width, icon_height, TFT_WHITE, TFT_BLACK);
  tft->drawXBitmap(130, 25, bluetooth, icon_width, icon_height, TFT_WHITE, TFT_BLACK);
  tft->drawXBitmap(25, 130, gps, icon_width, icon_height, TFT_WHITE, TFT_BLACK);
  tft->drawXBitmap(130, 130, menuexit, icon_width, icon_height, TFT_WHITE, TFT_BLACK);

  int16_t x, y, tx, ty;

  int mSelect = 0; 
  // Permet de maintenir la page TFT_eSPI ouverte jusqu'à ce que l'utilisateur touche une option
  boolean exitMenu = false;   
  
  while (!exitMenu) {
    // Attend que l'utilisateur touche l'écran
    if (ttgo->getTouch(x, y)) { 
      while (ttgo->getTouch(tx, ty)) {} 
      Serial.printf("toolPageMenu clicked %u %u\n", x, y);
      int index = 0;
      if ( x < w / 2 && y < h / 2 ) {
        mSelect = 1;
        exitMenu = true;
      } else if ( x > w / 2 && y < h / 2 ) {
        mSelect = 2;
        exitMenu = true;
      } else if ( x < w / 2 && y > h / 2 ) {
        mSelect = 6;
        exitMenu = true;
      } else {
        mSelect = 0;
        exitMenu = true;
      } 
    }
  }
  ttgo->tft->fillScreen(TFT_BLACK);
  menuOpened = false;

  // Renvoie l'index de la page désirée
  return mSelect;
}

#include   // PROGMEM support header

#define icon_width 80
#define icon_height 80
PROGMEM const unsigned char menu[] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x00,
  0x80, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0xC0, 0xFF,
  0xFF, 0xFF, 0x07, 0xE0, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0xFF, 0xFF, 0xFF,
  0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0x03, 0xE0, 0xFF, 0xFF, 0xFF, 0x0F, 0xF8,
  0xFF, 0xFF, 0xFF, 0x07, 0xF0, 0xFF, 0xFF, 0xFF, 0x1F, 0xF8, 0xFF, 0xFF,
  0xFF, 0x07, 0xF0, 0x07, 0x00, 0xC0, 0x1F, 0xF8, 0x01, 0x00, 0xE0, 0x07,
  0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03,
  0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80,
  0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC,
  0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00,
  0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F,
  0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03,
  0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80,
  0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC,
  0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00,
  0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F,
  0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03,
  0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80,
  0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC,
  0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00,
  0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F,
  0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x07,
  0x00, 0xC0, 0x1F, 0xF8, 0x01, 0x00, 0xE0, 0x07, 0xF0, 0xFF, 0xFF, 0xFF,
  0x1F, 0xF8, 0xFF, 0xFF, 0xFF, 0x07, 0xE0, 0xFF, 0xFF, 0xFF, 0x0F, 0xF8,
  0xFF, 0xFF, 0xFF, 0x07, 0xE0, 0xFF, 0xFF, 0xFF, 0x0F, 0xF0, 0xFF, 0xFF,
  0xFF, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0x07, 0xE0, 0xFF, 0xFF, 0xFF, 0x01,
  0x80, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFE,
  0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8,
  0xFF, 0x3F, 0x00, 0x00, 0xFE, 0xFF, 0x1F, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
  0x01, 0x80, 0xFF, 0xFF, 0x7F, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x03, 0xE0,
  0xFF, 0xFF, 0xFF, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0x07, 0xF0, 0xFF, 0xFF,
  0xFF, 0x03, 0xE0, 0xFF, 0xFF, 0xFF, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0x03,
  0xE0, 0xFF, 0xFF, 0xFF, 0x0F, 0xF8, 0xFF, 0xFF, 0xFF, 0x07, 0xF0, 0x07,
  0x00, 0xC0, 0x1F, 0xF8, 0x03, 0x00, 0xF0, 0x07, 0xF0, 0x03, 0x00, 0x80,
  0x1F, 0xFC, 0x01, 0x00, 0xE0, 0x0F, 0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC,
  0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00,
  0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F,
  0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03,
  0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80,
  0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC,
  0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00,
  0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F,
  0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03,
  0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80,
  0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC,
  0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00,
  0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F,
  0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03,
  0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80,
  0x1F, 0xFC, 0x00, 0x00, 0xC0, 0x0F, 0xF0, 0x03, 0x00, 0x80, 0x1F, 0xFC,
  0x01, 0x00, 0xE0, 0x07, 0xF0, 0x07, 0x00, 0xC0, 0x1F, 0xF8, 0x03, 0x00,
  0xF0, 0x07, 0xE0, 0xFF, 0xFF, 0xFF, 0x0F, 0xF8, 0xFF, 0xFF, 0xFF, 0x07,
  0xE0, 0xFF, 0xFF, 0xFF, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0xFF,
  0xFF, 0xFF, 0x07, 0xF0, 0xFF, 0xFF, 0xFF, 0x03, 0x80, 0xFF, 0xFF, 0xFF,
  0x03, 0xE0, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x80,
  0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0xFC, 0xFF,
  0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
PROGMEM const unsigned char menuexit[] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0x1F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00,
  0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00,
  0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFC, 0x9B, 0xA6, 0x55, 0x69, 0xB9,
  0x7F, 0x00, 0x00, 0x00, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00,
  0x00, 0x00, 0xFC, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,
  0xFC, 0x01, 0x00, 0x00, 0x00, 0x80, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0x03,
  0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0x03, 0x00, 0x00,
  0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x00,
  0x7F, 0x00, 0x00, 0x00, 0xFC, 0x03, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00,
  0x00, 0x00, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00,
  0xFC, 0x03, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0x01,
  0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0x03, 0x00, 0x00,
  0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0xFC, 0x03, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xFC, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
  0xFC, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x03,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x01, 0x00, 0xFC, 0x01, 0x00, 0x00,
  0x00, 0x00, 0x00, 0xFC, 0x03, 0x00, 0xFC, 0x03, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xFE, 0x07, 0x00, 0xFC, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
  0x1F, 0x00, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x1F, 0x00,
  0xFC, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0xFC, 0x03,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0xFC, 0x01, 0x00, 0x00,
  0x00, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0xFC, 0x03, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xC0, 0xFF, 0x01, 0xFC, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xFF, 0x07, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x07,
  0xFC, 0x01, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFC, 0x03,
  0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFC, 0x01, 0x00, 0x80,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0x03, 0x00, 0x80, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0x03, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0x3F, 0xFC, 0x01, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
  0xFC, 0x03, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFC, 0x01,
  0x00, 0x00, 0xDC, 0xDD, 0xB7, 0xDB, 0xFF, 0x0F, 0xFC, 0x03, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xFF, 0x07, 0xFC, 0x03, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x80, 0xFF, 0x03, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
  0xFF, 0x01, 0xFC, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00,
  0xFC, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0xFC, 0x01,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0xFC, 0x01, 0x00, 0x00,
  0x00, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0xFC, 0x03, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xFC, 0x0F, 0x00, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
  0x07, 0x00, 0xFC, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x03, 0x00,
  0xFC, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x01, 0x00, 0xFC, 0x01,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x03, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xFC, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xFC, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0xFC, 0x01,
  0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0xFC, 0x03, 0x00, 0x00,
  0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x00,
  0x7F, 0x00, 0x00, 0x00, 0xFC, 0x03, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00,
  0x00, 0x00, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00,
  0xFC, 0x03, 0x00, 0x00, 0x00, 0x80, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0x03,
  0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFC, 0x01, 0x00, 0x00,
  0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0x03, 0x00, 0x00, 0x00, 0x00,
  0x7F, 0x00, 0x00, 0x00, 0xFC, 0x5B, 0xB5, 0xA5, 0x59, 0xAA, 0x7F, 0x00,
  0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
  0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0x3F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00,
  0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

PROGMEM const unsigned char wifi[] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF,
  0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF,
  0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00,
  0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xF8,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xFE, 0xFF, 0xFF,
  0x2B, 0xE4, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
  0xFC, 0xFF, 0xFF, 0x00, 0x80, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xC0, 0xFF,
  0xFF, 0x01, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x07,
  0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0xF8, 0xFF,
  0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0xFC, 0xFF, 0x03, 0x00,
  0x00, 0x00, 0x00, 0x80, 0xFF, 0x3F, 0xFE, 0xFF, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xFF, 0x7F, 0xFC, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xFC, 0x3F, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F,
  0xF8, 0x0F, 0x00, 0x00, 0x68, 0x09, 0x00, 0x00, 0xF0, 0x0F, 0xF0, 0x07,
  0x00, 0x80, 0xFF, 0xFF, 0x01, 0x00, 0xE0, 0x07, 0xC0, 0x03, 0x00, 0xF0,
  0xFF, 0xFF, 0x0F, 0x00, 0x80, 0x03, 0xC0, 0x00, 0x00, 0xFE, 0xFF, 0xFF,
  0x7F, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00,
  0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00,
  0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
  0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0x7F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x03, 0xE0, 0xFF, 0xFF,
  0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0x03, 0x00,
  0x00, 0x80, 0xFF, 0x1F, 0x00, 0x00, 0xF8, 0xFF, 0x01, 0x00, 0x00, 0x00,
  0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x03,
  0x00, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00,
  0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x1E,
  0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00,
  0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xF0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x1F,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x80, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
  0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF,
  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x03, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x80, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
  0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF,
  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xFC, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

PROGMEM const unsigned char bluetooth[] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x80, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xC0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x3F,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x7F, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xC0, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xC0, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF,
  0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x1F, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xEF, 0x7F, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xC0, 0xDF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xC0, 0x9F, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xC0, 0x0F, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x1F,
  0xFE, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x1F, 0xFC, 0x0F,
  0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x80, 0x0F, 0xF0, 0x0F, 0x00, 0x00,
  0x00, 0x00, 0x7E, 0x00, 0xC0, 0x1F, 0xF0, 0x1F, 0x00, 0x00, 0x00, 0x00,
  0xFE, 0x01, 0xC0, 0x1F, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x01,
  0xC0, 0x0F, 0xC0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x03, 0xC0, 0x1F,
  0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x07, 0xC0, 0x0F, 0xC0, 0x7F,
  0x00, 0x00, 0x00, 0x00, 0xF8, 0x0F, 0xC0, 0x1F, 0xE0, 0x3F, 0x00, 0x00,
  0x00, 0x00, 0xF0, 0x1F, 0xC0, 0x1F, 0xF0, 0x1F, 0x00, 0x00, 0x00, 0x00,
  0xE0, 0x7F, 0xC0, 0x1F, 0xF8, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x7F,
  0xC0, 0x0F, 0xFE, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xC0, 0x1F,
  0xFE, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC3, 0x1F, 0xFF, 0x01,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xC3, 0xCF, 0xFF, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0xFC, 0xCF, 0xDF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xF8, 0xCF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
  0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF,
  0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x07, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xF8, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
  0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF,
  0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x0F, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0xF8, 0x8F, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xFC, 0xC7, 0xDF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
  0xC7, 0xCF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC1, 0x1F,
  0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xC1, 0x0F, 0xFE, 0x03,
  0x00, 0x00, 0x00, 0x00, 0xC0, 0x7F, 0xC0, 0x1F, 0xFC, 0x07, 0x00, 0x00,
  0x00, 0x00, 0xE0, 0x7F, 0xC0, 0x0F, 0xF8, 0x0F, 0x00, 0x00, 0x00, 0x00,
  0xF0, 0x1F, 0xC0, 0x1F, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x0F,
  0xC0, 0x1F, 0xE0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x0F, 0xC0, 0x1F,
  0xC0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x03, 0xC0, 0x0F, 0x80, 0x7F,
  0x00, 0x00, 0x00, 0x00, 0xFE, 0x01, 0xC0, 0x1F, 0x80, 0x7F, 0x00, 0x00,
  0x00, 0x00, 0xFE, 0x00, 0xC0, 0x1F, 0xE0, 0x3F, 0x00, 0x00, 0x00, 0x00,
  0xFE, 0x00, 0xC0, 0x0F, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00,
  0xC0, 0x1F, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x1F,
  0xFC, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x0F, 0xFE, 0x03,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x1F, 0xFF, 0x03, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xC0, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xC0, 0xCF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF,
  0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x0F, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x07, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xC0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x7F,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x3F, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x80, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
};

PROGMEM const unsigned char gps[] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 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, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff,
  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xf8, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff,
  0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0xfe, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
  0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x7f, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xfe, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff,
  0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x1f, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xc0, 0xff, 0x83, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x80, 0xff, 0xe1, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
  0xe0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xf8, 0xff,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xfc, 0xff, 0x01, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
  0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff,
  0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x03, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x80, 0x9f, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x80, 0x3f, 0xff, 0xff, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
  0xfe, 0x3f, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, 0x3f,
  0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf9, 0x0f, 0xff, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xf7, 0x0f, 0xff, 0x01, 0x00, 0x00,
  0x00, 0x00, 0x00, 0xfc, 0xe7, 0xc3, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xfc, 0xcf, 0xc3, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
  0x9f, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x3f, 0xf0,
  0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0xf0, 0xff, 0x3f,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x7f, 0xe0, 0xff, 0x7f, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x7e, 0x80, 0xff, 0xff, 0x01, 0x00, 0x0e, 0x1c, 0x0c, 0x00,
  0x38, 0x00, 0xff, 0xff, 0x03, 0x00, 0x0c, 0x18, 0x1c, 0x00, 0x00, 0x00,
  0xfe, 0xff, 0x07, 0x00, 0x0e, 0x38, 0x3c, 0x00, 0x00, 0x00, 0xfc, 0xff,
  0x0f, 0x00, 0x1c, 0x38, 0x78, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x1f, 0x00,
  0x1c, 0x30, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f, 0x00, 0x18, 0x70,
  0xe0, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x7f, 0x00, 0x38, 0xf0, 0x80, 0x00,
  0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00,
  0x80, 0xff, 0xff, 0x01, 0x70, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff,
  0xff, 0x03, 0x70, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x07,
  0xe0, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0xe0, 0x01,
  0xfe, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x1f, 0xc0, 0x01, 0xf0, 0x00,
  0x00, 0x00, 0x00, 0xf0, 0xff, 0x1f, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00,
  0x00, 0xe0, 0xff, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
  0xff, 0x07, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x01,
  0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0xf8,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0xf0, 0x03, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x10, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

PROGMEM const unsigned char accel[] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
   0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xdf, 0xe7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xce,
   0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
   0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0xf8, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0xf8, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0xfc, 0x01,
   0x00, 0x7e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x7c,
   0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x7c, 0x00, 0x00,
   0x80, 0x3f, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x80, 0x3f,
   0x00, 0x00, 0xfc, 0xf0, 0x1f, 0x7c, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00,
   0xfc, 0xf8, 0x3f, 0x7c, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xf8,
   0x3f, 0x7c, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x3f, 0x7c,
   0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x3f, 0x7c, 0x00, 0x00,
   0xf8, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x3f, 0x7c, 0x00, 0x00, 0xf0, 0xff,
   0xff, 0xff, 0xff, 0xf8, 0x3f, 0x7c, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff,
   0xff, 0xf8, 0x3f, 0x7c, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0xfc, 0xf0,
   0x3f, 0x7c, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0xfc, 0xf0, 0x1f, 0x7c,
   0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x7c, 0x00, 0x00,
   0x00, 0x7e, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3c,
   0x00, 0x00, 0xf8, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
   0xf8, 0x01, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff,
   0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x7f,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xc1, 0x01, 0x00, 0x00,
   0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xe3, 0x03, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0xf8, 0xe7, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xf0, 0xef, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
   0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xe0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
   0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x03,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x03, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
PROGMEM const unsigned char clockico[] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x1B, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xFE, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF,
  0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF,
  0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F,
  0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xEF, 0xFB, 0xFF, 0x1F, 0x00, 0x00,
  0x00, 0x00, 0xFE, 0x7F, 0xC0, 0x01, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
  0xFF, 0x1F, 0xC0, 0x01, 0xFC, 0x7F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x07,
  0xC0, 0x03, 0xF0, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x03, 0xC0, 0x01,
  0xE0, 0xFF, 0x03, 0x00, 0x00, 0xE0, 0xFF, 0x06, 0x80, 0x01, 0x30, 0xFF,
  0x03, 0x00, 0x00, 0xF0, 0x3F, 0x0C, 0x00, 0x00, 0x10, 0xFE, 0x0F, 0x00,
  0x00, 0xF8, 0x1F, 0x08, 0x00, 0x00, 0x10, 0xF8, 0x0F, 0x00, 0x00, 0xFC,
  0x0F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xFC, 0x07, 0x00,
  0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0xFE, 0x03, 0x00, 0x00, 0x00,
  0x00, 0xC0, 0x3F, 0x00, 0x00, 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC0,
  0x7F, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7F, 0x00,
  0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x00, 0x80, 0xFF,
  0x03, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x80, 0xFF, 0x0F, 0x00,
  0x00, 0x00, 0x00, 0xF0, 0xFF, 0x01, 0xC0, 0xBF, 0x0F, 0x00, 0x00, 0x00,
  0x00, 0xF8, 0xFE, 0x01, 0xC0, 0x3F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x70,
  0xFC, 0x01, 0xC0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x80, 0x20, 0xFC, 0x03,
  0xE0, 0x1F, 0x80, 0x07, 0x00, 0x00, 0xE0, 0x01, 0xF8, 0x03, 0xE0, 0x0F,
  0xC0, 0x1F, 0x00, 0x00, 0xF8, 0x01, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3F,
  0x00, 0x00, 0xFF, 0x01, 0xF8, 0x07, 0xE0, 0x0F, 0x00, 0xFF, 0x00, 0x00,
  0xFF, 0x00, 0xF8, 0x07, 0xF0, 0x0F, 0x00, 0xFE, 0x03, 0xE0, 0x3F, 0x00,
  0xF0, 0x07, 0xF0, 0x07, 0x00, 0xF8, 0x0F, 0xF8, 0x1F, 0x00, 0xF0, 0x07,
  0xF0, 0x07, 0x00, 0xE0, 0xBF, 0xFD, 0x07, 0x00, 0xF0, 0x07, 0xF0, 0x07,
  0x00, 0xC0, 0xFF, 0xFF, 0x01, 0x00, 0xF0, 0x07, 0xF0, 0x07, 0x00, 0x00,
  0xFE, 0x7F, 0x00, 0x00, 0xF0, 0x0F, 0xF0, 0x7F, 0x00, 0x00, 0xFC, 0x1F,
  0x00, 0x00, 0xFF, 0x07, 0xF0, 0x7F, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00,
  0xFE, 0x0F, 0xF0, 0x07, 0x00, 0x00, 0xF0, 0x07, 0x00, 0x00, 0xF0, 0x07,
  0xF0, 0x07, 0x00, 0x00, 0xE0, 0x03, 0x00, 0x00, 0xF0, 0x07, 0xF0, 0x0F,
  0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xF0, 0x07, 0xE0, 0x07, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xF0, 0x07, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xF0, 0x07, 0xE0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xF8, 0x07, 0xE0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x03,
  0xE0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x03, 0xE0, 0x1F,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x03, 0xC0, 0x1F, 0x04, 0x00,
  0x00, 0x00, 0x00, 0x10, 0xFC, 0x03, 0xC0, 0x3F, 0x0F, 0x00, 0x00, 0x00,
  0x00, 0x78, 0xFC, 0x03, 0xC0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF8,
  0xFF, 0x01, 0x80, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x01,
  0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0x00, 0xFF,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x00, 0x00, 0xFF, 0x01, 0x00,
  0x00, 0x00, 0x00, 0x80, 0x7F, 0x00, 0x00, 0xFE, 0x01, 0x00, 0x00, 0x00,
  0x00, 0xC0, 0x7F, 0x00, 0x00, 0xFE, 0x03, 0x00, 0x00, 0x00, 0x00, 0xE0,
  0x3F, 0x00, 0x00, 0xFC, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x1F, 0x00,
  0x00, 0xF8, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xF8,
  0x1F, 0x08, 0x00, 0x00, 0x10, 0xFC, 0x0F, 0x00, 0x00, 0xF0, 0x3F, 0x0C,
  0x00, 0x00, 0x30, 0xFE, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0x06, 0xC0, 0x01,
  0x30, 0xFF, 0x03, 0x00, 0x00, 0xC0, 0xFF, 0x07, 0xC0, 0x03, 0xE0, 0xFF,
  0x01, 0x00, 0x00, 0x80, 0xFF, 0x07, 0xC0, 0x01, 0xF0, 0xFF, 0x00, 0x00,
  0x00, 0x00, 0xFF, 0x1F, 0xC0, 0x01, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00,
  0xFE, 0xFF, 0xC1, 0x81, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
  0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF,
  0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xF0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
  0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x05,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
PROGMEM const unsigned char music[] = {
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
};
PROGMEM const unsigned char settings[] = {
  0x00, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x5F, 0xF9, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0F, 0xF0, 0x01, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x80, 0x0F, 0xF0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x80, 0x0F, 0xF0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0F, 0x80,
  0x07, 0xF0, 0x01, 0xF0, 0x01, 0x00, 0x00, 0xC0, 0x3F, 0xC0, 0x07, 0xE0,
  0x01, 0xFC, 0x03, 0x00, 0x00, 0xE0, 0x7F, 0xE0, 0x07, 0xE0, 0x07, 0xFE,
  0x07, 0x00, 0x00, 0xF0, 0xFF, 0xFC, 0x07, 0xE0, 0xBF, 0xFF, 0x0F, 0x00,
  0x00, 0xF8, 0xFF, 0xFF, 0x07, 0xE0, 0xFF, 0xBF, 0x1F, 0x00, 0x00, 0xFC,
  0xF8, 0xFF, 0x03, 0xC0, 0xFF, 0x1F, 0x3F, 0x00, 0x00, 0x7E, 0xE0, 0x7F,
  0x00, 0x00, 0xFE, 0x07, 0x7F, 0x00, 0x00, 0x7F, 0xC0, 0x0F, 0x00, 0x00,
  0xF0, 0x03, 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00,
  0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00,
  0x80, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x3F, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x3F, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0x1F, 0x00,
  0x00, 0xF8, 0x01, 0x00, 0xFF, 0xFF, 0x00, 0x80, 0x1F, 0x00, 0x00, 0xF0,
  0x01, 0x80, 0xFF, 0xFF, 0x01, 0x80, 0x0F, 0x00, 0x00, 0xF8, 0x00, 0xE0,
  0xFF, 0xFF, 0x07, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0xF0, 0x5F, 0xFA,
  0x0F, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0xF8, 0x07, 0xE0, 0x1F, 0x00,
  0x1E, 0x00, 0x00, 0x7C, 0x00, 0xFC, 0x01, 0x80, 0x3F, 0x00, 0x3E, 0x00,
  0x00, 0x7C, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x7E, 0x00, 0xE0, 0x3F,
  0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0xFC, 0x07, 0xFC, 0x3F, 0x00, 0x3F,
  0x00, 0x00, 0xFC, 0x00, 0xFC, 0x3F, 0xFE, 0x3F, 0x00, 0x1F, 0x00, 0x00,
  0xF8, 0x00, 0xF8, 0x7F, 0xFE, 0x1F, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00,
  0xF8, 0xFF, 0xFF, 0x02, 0x80, 0x0F, 0x00, 0x00, 0xF0, 0x01, 0x80, 0xFF,
  0x0F, 0x00, 0x80, 0x0F, 0x00, 0x00, 0xF0, 0x01, 0x00, 0xF8, 0x1F, 0x00,
  0x80, 0x07, 0x00, 0x00, 0xF0, 0x01, 0x00, 0xF0, 0x0F, 0x00, 0x80, 0x07,
  0x00, 0x00, 0xE0, 0x01, 0x00, 0xF8, 0x1F, 0x00, 0x80, 0x0F, 0x00, 0x00,
  0xE0, 0x01, 0x00, 0xF0, 0x1F, 0x00, 0x80, 0x0F, 0x00, 0x00, 0xE0, 0x01,
  0x00, 0xF0, 0x0F, 0x00, 0x80, 0x07, 0x00, 0x00, 0xF0, 0x01, 0x00, 0xF8,
  0x1F, 0x00, 0x80, 0x07, 0x00, 0x00, 0xE0, 0x01, 0x00, 0xF0, 0x0F, 0x00,
  0x80, 0x0F, 0x00, 0x00, 0xF0, 0x01, 0x00, 0xF8, 0x7F, 0x00, 0x80, 0x0F,
  0x00, 0x00, 0xF0, 0x01, 0x80, 0xFF, 0xFF, 0x0F, 0x00, 0x1F, 0x00, 0x00,
  0xF8, 0x00, 0xF8, 0xFF, 0xFE, 0x3F, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00,
  0xFC, 0x7F, 0xFC, 0x3F, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0xFC, 0x3F,
  0xF0, 0x3F, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x00, 0xFC, 0x07, 0x00, 0x7E,
  0x00, 0x7C, 0x00, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0xFC,
  0x01, 0x80, 0x3F, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, 0xF8, 0x07, 0xE0,
  0x1F, 0x00, 0x3E, 0x00, 0x00, 0xF8, 0x00, 0xF0, 0x3F, 0xFC, 0x0F, 0x00,
  0x1F, 0x00, 0x00, 0xF8, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x1F, 0x00,
  0x00, 0xF0, 0x01, 0x80, 0xFF, 0xFF, 0x01, 0x80, 0x0F, 0x00, 0x00, 0xF0,
  0x01, 0x00, 0xFF, 0xFF, 0x00, 0x80, 0x0F, 0x00, 0x00, 0xF8, 0x01, 0x00,
  0xF8, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00,
  0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x03, 0x00, 0x00,
  0xC0, 0x00, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x0F, 0x00, 0x00, 0xF0, 0x03,
  0xFE, 0x00, 0x00, 0x7E, 0xE0, 0x7F, 0x00, 0x00, 0xFE, 0x07, 0x7E, 0x00,
  0x00, 0xFC, 0xF0, 0xFF, 0x03, 0xC0, 0xFF, 0x0F, 0x3F, 0x00, 0x00, 0xF8,
  0xFD, 0xFF, 0x07, 0xC0, 0xFF, 0xBF, 0x1F, 0x00, 0x00, 0xF0, 0xFF, 0xFD,
  0x07, 0xE0, 0xBF, 0xFF, 0x0F, 0x00, 0x00, 0xE0, 0x7F, 0xF0, 0x07, 0xE0,
  0x07, 0xFE, 0x07, 0x00, 0x00, 0xC0, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xFC,
  0x03, 0x00, 0x00, 0x80, 0x1F, 0x80, 0x07, 0xF0, 0x01, 0xF0, 0x01, 0x00,
  0x00, 0x00, 0x00, 0x80, 0x0F, 0xF0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x80, 0x0F, 0xF0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
  0x0F, 0xF0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0xF5,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xFC, 0x3F, 0x00, 0x00, 0x00, 0x00,
};
PROGMEM const unsigned char tools[] = {
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
};
PROGMEM const unsigned char main32[] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1F, 0xF8, 0x0F,
  0xFC, 0x3F, 0xFC, 0x1F, 0x0C, 0x70, 0x0E, 0x30, 0x0C, 0x20, 0x06, 0x30,
  0x0C, 0x30, 0x06, 0x30, 0x0C, 0x60, 0x06, 0x30, 0x0E, 0x70, 0x06, 0x30,
  0x0C, 0x20, 0x06, 0x30, 0x0C, 0x30, 0x06, 0x30, 0x0C, 0x60, 0x06, 0x30,
  0x0C, 0x70, 0x06, 0x30, 0xFC, 0x3F, 0xFE, 0x3F, 0xF8, 0x3F, 0xFC, 0x0F,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x0D, 0xB0, 0x09,
  0xF8, 0x3F, 0xFC, 0x1F, 0x1C, 0x30, 0x4E, 0x3A, 0x0C, 0x70, 0x06, 0x30,
  0x0C, 0x20, 0x06, 0x30, 0x0C, 0x30, 0x06, 0x30, 0x0C, 0x60, 0x06, 0x30,
  0x0C, 0x60, 0x06, 0x30, 0x0C, 0x30, 0x06, 0x30, 0x0E, 0x60, 0x06, 0x30,
  0x0C, 0x60, 0x06, 0x30, 0x4C, 0x3A, 0x9E, 0x39, 0xF8, 0x3F, 0xFC, 0x1F,
  0xD0, 0x06, 0xA0, 0x09, 0x00, 0x00, 0x00, 0x00,
};
PROGMEM const unsigned char wifi32[] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x05, 0x00, 0x00, 0xFE, 0x7F, 0x00,
  0x80, 0xFF, 0xFF, 0x01, 0xE0, 0xFF, 0xFF, 0x07, 0xF0, 0x0F, 0xF0, 0x1F,
  0xFC, 0x01, 0x80, 0x3F, 0x7E, 0x00, 0x00, 0x7E, 0x1E, 0x00, 0x00, 0x7C,
  0x0C, 0xE0, 0x0B, 0x30, 0x04, 0xFC, 0x3F, 0x20, 0x00, 0xFF, 0x7F, 0x00,
  0x80, 0xFF, 0xFF, 0x01, 0xC0, 0x1F, 0xF8, 0x03, 0xC0, 0x07, 0xE0, 0x03,
  0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x03, 0x00,
  0x00, 0xE0, 0x07, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0xF0, 0x0F, 0x00,
  0x00, 0xF0, 0x0F, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0xE0, 0x07, 0x00,
  0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
PROGMEM const unsigned char bluetooth32[] = {
  0x00, 0x00, 0x03, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x0F, 0x00,
  0x00, 0x80, 0x1F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x3B, 0x00,
  0x00, 0x80, 0xF3, 0x00, 0x80, 0x81, 0xE3, 0x01, 0x80, 0x03, 0xC3, 0x01,
  0x00, 0x8F, 0xE3, 0x01, 0x00, 0x9E, 0x73, 0x00, 0x00, 0x9C, 0x7B, 0x00,
  0x00, 0x78, 0x3F, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0xE0, 0x0F, 0x00,
  0x00, 0xC0, 0x03, 0x00, 0x00, 0xC0, 0x07, 0x00, 0x00, 0xE0, 0x07, 0x00,
  0x00, 0xF0, 0x0F, 0x00, 0x00, 0xB8, 0x3F, 0x00, 0x00, 0x3C, 0x7B, 0x00,
  0x00, 0x8E, 0xF3, 0x00, 0x00, 0x8F, 0xE3, 0x01, 0x80, 0x03, 0xC3, 0x01,
  0x80, 0x81, 0xE3, 0x01, 0x00, 0x80, 0x73, 0x00, 0x00, 0x00, 0x7B, 0x00,
  0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x80, 0x0F, 0x00,
  0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00,
};
PROGMEM const unsigned char gps32[] = {
  0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
  0x7c, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00,
  0xf8, 0x03, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00,
  0xc0, 0x1f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00,
  0x00, 0x9e, 0x03, 0x00, 0x00, 0xcc, 0x07, 0x00, 0x00, 0xe0, 0x0f, 0x00,
  0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xee, 0x07, 0x00,
  0x00, 0xfc, 0x33, 0x00, 0x00, 0xb8, 0x79, 0x00, 0x00, 0x78, 0xfc, 0x00,
  0x00, 0x60, 0xfc, 0x01, 0x80, 0x40, 0xf8, 0x03, 0x12, 0x01, 0xf0, 0x07,
  0x22, 0x03, 0xe0, 0x0f, 0x42, 0x00, 0xc0, 0x1f, 0xc4, 0x00, 0x80, 0x3f,
  0x08, 0x01, 0x00, 0x3f, 0x18, 0x00, 0x00, 0x1e, 0x20, 0x00, 0x00, 0x1c,
  0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
PROGMEM const unsigned char accel32[] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3c, 0x00,
  0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x5a, 0x00,
  0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xff, 0x00,
  0x00, 0x80, 0xff, 0x01, 0x20, 0xc0, 0x81, 0x03, 0x30, 0xc0, 0x00, 0x03,
  0x38, 0xc0, 0x3c, 0x03, 0xfc, 0xff, 0x3c, 0x03, 0xfc, 0xff, 0x3c, 0x03,
  0x38, 0xc0, 0x3c, 0x03, 0x30, 0xc0, 0x00, 0x03, 0x00, 0x80, 0x83, 0x03,
  0x00, 0x80, 0xff, 0x03, 0x00, 0x00, 0x7e, 0x37, 0x00, 0x00, 0x00, 0x3e,
  0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3e,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0
};
PROGMEM const unsigned char settings32[] = {
  0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x06, 0x00, 0x00, 0x20, 0x04, 0x00,
  0xc0, 0x30, 0x0c, 0x03, 0xe0, 0x35, 0xcc, 0x07, 0x70, 0x1f, 0xf8, 0x0c,
  0x18, 0x04, 0x40, 0x18, 0x18, 0x00, 0x00, 0x18, 0x30, 0x00, 0x00, 0x0c,
  0x20, 0xc0, 0x03, 0x0c, 0x60, 0xf0, 0x0f, 0x04, 0x30, 0x18, 0x18, 0x0c,
  0x18, 0x0c, 0x30, 0x2c, 0x1f, 0x0c, 0x20, 0xf8, 0x03, 0x06, 0x60, 0xc0,
  0x03, 0x06, 0x60, 0xc0, 0x03, 0x06, 0x60, 0x80, 0x03, 0x06, 0x60, 0xc0,
  0x1f, 0x04, 0x20, 0xf8, 0x38, 0x0c, 0x30, 0x1c, 0x30, 0x18, 0x1c, 0x0c,
  0x60, 0xf0, 0x0f, 0x04, 0x20, 0xc0, 0x03, 0x0e, 0x30, 0x00, 0x00, 0x0c,
  0x18, 0x00, 0x00, 0x18, 0x18, 0x02, 0x00, 0x18, 0x30, 0x1f, 0xf8, 0x0c,
  0xe0, 0x39, 0xac, 0x07, 0xc0, 0x20, 0x0c, 0x03, 0x00, 0x20, 0x04, 0x00,
  0x00, 0xe0, 0x06, 0x00, 0x00, 0xc0, 0x07, 0x00,
};
PROGMEM const unsigned char clock32[] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x0F, 0x00,
  0x00, 0xFE, 0x7F, 0x00, 0x00, 0xBF, 0xFD, 0x00, 0xC0, 0x87, 0xE1, 0x01,
  0xE0, 0x03, 0xA0, 0x03, 0xE0, 0x00, 0x80, 0x07, 0x70, 0x00, 0x00, 0x0F,
  0x78, 0x00, 0x00, 0x1E, 0xF8, 0x00, 0x00, 0x1F, 0x1C, 0x00, 0x00, 0x1C,
  0x1C, 0x06, 0x60, 0x38, 0x1C, 0x1C, 0x38, 0x38, 0x0C, 0x30, 0x0C, 0x38,
  0x1C, 0xE0, 0x07, 0x38, 0x0C, 0x80, 0x03, 0x38, 0x1C, 0x00, 0x00, 0x38,
  0x1C, 0x00, 0x00, 0x38, 0x1C, 0x00, 0x00, 0x18, 0x98, 0x00, 0x00, 0x1D,
  0xF8, 0x00, 0x00, 0x1E, 0x38, 0x00, 0x00, 0x0E, 0x70, 0x00, 0x00, 0x0E,
  0xE0, 0x00, 0x00, 0x07, 0xC0, 0x07, 0xE0, 0x03, 0xC0, 0x87, 0xE0, 0x03,
  0x00, 0xBF, 0xFF, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0x00, 0xF8, 0x0F, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
PROGMEM const unsigned char music32[] = {
  0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x3f, 0x00, 0x00, 0xff, 0x7f,
  0x00, 0xf8, 0xff, 0x3f, 0x00, 0xf8, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0x3f,
  0x00, 0xf8, 0xff, 0x7f, 0x00, 0xf8, 0x3f, 0x30, 0x00, 0xb8, 0x00, 0x60,
  0x00, 0x38, 0x00, 0x30, 0x00, 0x18, 0x00, 0x30, 0x00, 0x18, 0x00, 0x30,
  0x00, 0x38, 0x00, 0x30, 0x00, 0x18, 0x00, 0x30, 0x00, 0x38, 0x00, 0x30,
  0x00, 0x18, 0x00, 0x30, 0x00, 0x38, 0x00, 0x30, 0x00, 0x18, 0x00, 0x30,
  0x00, 0x38, 0x00, 0x30, 0x00, 0x18, 0x00, 0x31, 0x00, 0x38, 0xc0, 0x7f,
  0x00, 0x18, 0xf0, 0x3f, 0xc0, 0x3b, 0xf8, 0x3f, 0xf0, 0x1f, 0xf8, 0x7f,
  0xf8, 0x3f, 0xfc, 0x3f, 0xfc, 0x1f, 0xf8, 0x3f, 0xfc, 0x1f, 0xfc, 0x1f,
  0xfc, 0x1f, 0xf8, 0x0f, 0xfe, 0x1f, 0xf0, 0x07, 0xfc, 0x0f, 0x00, 0x00,
  0xf8, 0x03, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00,
};
PROGMEM const unsigned char tools32[] = {
  0x00, 0x00, 0x00, 0x00, 0xE0, 0x01, 0x07, 0x00, 0xE0, 0x07, 0x3E, 0x00,
  0xE0, 0x0F, 0xF0, 0x00, 0xC2, 0x0F, 0xE0, 0x01, 0x0E, 0x1F, 0xE0, 0x03,
  0x0E, 0x0F, 0xE0, 0x07, 0x3E, 0x1F, 0xE0, 0x07, 0xFE, 0x1F, 0xE0, 0x0F,
  0xFC, 0x1F, 0xF0, 0x1F, 0xFC, 0x3F, 0xF8, 0x1F, 0xF8, 0xFF, 0x3C, 0x7C,
  0x60, 0x7F, 0x1E, 0x78, 0x00, 0x3C, 0x0F, 0x38, 0x00, 0xB8, 0x07, 0x08,
  0x00, 0xC0, 0x03, 0x00, 0x00, 0xE0, 0x09, 0x00, 0x00, 0xE0, 0x1C, 0x00,
  0x00, 0x5C, 0x3E, 0x00, 0x00, 0x3E, 0xFF, 0x03, 0x00, 0x3F, 0xFE, 0x1F,
  0x80, 0x1F, 0xFC, 0x1F, 0xC0, 0x0F, 0xFC, 0x3F, 0xE0, 0x07, 0xF0, 0x7F,
  0xF0, 0x03, 0xF0, 0x7C, 0xFC, 0x03, 0xF8, 0x70, 0xFE, 0x00, 0xF8, 0x71,
  0xFE, 0x00, 0xF0, 0x21, 0x7C, 0x00, 0xE0, 0x03, 0x3C, 0x00, 0xE0, 0x0F,
  0x10, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00,
};
PROGMEM const unsigned char menu30[] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x1F, 0xFC, 0x07,
  0xFC, 0x1F, 0xFF, 0x0F, 0x0C, 0x38, 0x03, 0x0C, 0x04, 0x30, 0x03, 0x0C,
  0x0E, 0x30, 0x03, 0x0C, 0x0C, 0x30, 0x03, 0x18, 0x0E, 0x30, 0x03, 0x0C,
  0x04, 0x30, 0x03, 0x0C, 0x0C, 0x30, 0x03, 0x1C, 0x0C, 0x30, 0x03, 0x0C,
  0xFC, 0x1F, 0xFE, 0x0F, 0xFC, 0x1F, 0xFE, 0x07, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x70, 0x07, 0xBC, 0x01, 0xFC, 0x1F, 0xFE, 0x0F,
  0x8C, 0x38, 0x07, 0x0E, 0x0C, 0x30, 0x03, 0x0C, 0x04, 0x30, 0x03, 0x08,
  0x0E, 0x30, 0x03, 0x0C, 0x0C, 0x30, 0x03, 0x1C, 0x04, 0x10, 0x03, 0x0C,
  0x0E, 0x30, 0x03, 0x08, 0x04, 0x30, 0x03, 0x0C, 0x4C, 0x39, 0x47, 0x0E,
  0xFC, 0x1F, 0xFE, 0x0F, 0x70, 0x07, 0x78, 0x01, 0x00, 0x00, 0x00, 0x00,
};

Le code source a été testé sur la T-Watch Touch 2019

Ainsi que sur la T-Watch 2020

T-Watch et cartes d’extension

Démonstration

Pour conclure cet article, voici une petite vidéo de démonstration. Même si la création des menus fait un peu bricolage avec TFT_eSPI, le rendu est efficace et rapide à faire.

Mises à jour

25/11/2020 Publication de l’article

English Version

Avez-vous aimé cet article ?
[Total: 0 Moyenne: 0]
Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Vous avez aimé ce projet ? Ne manquez plus aucun projet en vous abonnant à notre lettre d’information hebdomadaire!

Vous rencontrez un problème avec ce sujet ?

Peut-être que quelqu’un a déjà trouvé la solution, visitez le forum avant de poser votre question
Nous serions ravis de connaître votre avis

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Publicité
À Lire aussi
Publicité
Sur le Forum
Domotique et objets connectés à faire soi-même
Domotique et objets connectés à faire soi-même
Vous avez aimé ce tutoriel

Ne manquez plus les prochains projets

Recevez chaque semaine le récapitulatif des tutoriels et projets.

Vous pouvez vous désabonner à tout moment.