Christopher
Published © GPL3+

PetBit

You have heard of FitBit, well this is PetBit!

AdvancedShowcase (no instructions)429
PetBit

Things used in this project

Hardware components

ESP 8266 D1 Mini
×1
ESP 8266 D1 Mini Battery Shield
×1
1.8" SPI TFT Display 128 x 160 Pixels Using ST7735 Driver
×1
3.7V 1000mAh Lithium Battery
×1
5Kohm Multiturn Trimmer Potentiometer
×1
Tactile Switches
×1
PCB Board Pin Headers
×1
2Kohm Resistor
×1
JST Connector
×1
3.5mm Jack Socket
×1
3.5mm Jack Plug
×1
RS Components PCB Slide Switch RS Stock No 702-3763
×1
Plastic Enclosure Clear Lid
×1

Story

Read more

Custom parts and enclosures

PetBit PCB Top Board

PetBit PCB Bottom Board

Schematics

PetBit Top Circuit Board

Top circuit board for TFT screen and control switches.

PetBit Bottom Circuit Board

Bottom circuit board for ESP 8266 D1 Mini, D1 Mini Battery Shield, LIPO battery, voltage divider and 3.5mm jack plug for the external sensor.

Code

PetBit Sketch

Arduino
Main source code for PetBit
/*
 Name:		Pet_Bit.ino
 Created:	10/4/2020 12:03:28 PM
 Author:	Christopher Cooper
*/

// Libraries.

#include <Adafruit_GFX.h>			// Core graphics library.
#include <Adafruit_ST7735.h>		// Hardware-specific library for ST7735.
#include <Fonts/FreeMono9pt7b.h>	// Special font for displays.
#include <SPI.h>					// SPI bus for TFT using software SPI.
#include <ESP8266WiFi.h>			// ESP8266 library required for low power mode function.
#include <eeprom.h>					// EEPROM library.

#include "startScreen.h"			// Start screen bitmap.
#include "catStartScreen.h"			// Cat start screen bitmap.
#include "batteryIcons.h"			// Battery level bitmaps.

// Special ESP8266 settings.

extern "C" {						// Required for ESP8266 sleep mode.
#include "gpio.h"
}

extern "C" {						// Required for ESP8266 sleep mode.
#include "user_interface.h"
}

#define FPM_SLEEP_MAX_TIME           0xFFFFFFF		// Sets ESP sleep mode for maximum duration.

// TFT SPI Interface for ESP 8266 using software SPI.

#define TFT_RST       4   // Reset					// D2 on ESP8266.
#define TFT_DC        5   // Data command or AO 	// D1 on ESP8266.
#define TFT_MOSI      13  // Software data out		// D7 on ESP8266.
#define TFT_SCLK      14  // Software clock out		// D5 on ESP8266.
#define TFT_CS        15  // Chip select			// D8 on ESP8266.

// Pin out Configuration.

byte bPlus = 1;			  // Button +				// TX on ESP8266.
byte bMinus = 3;		  // Button -				// RX on ESP8266.

const int lcdBackLightPin = 16;						// D0 on ESP8266.
const int interruptMenuButton = 0;					// D3 on ESP8266.
const int interruptWakeButton = 2;					// D4 on ESP8266.
const int interruptWheelSensor = 12;				// D6 on ESP8266.

// Float map function as inbuilt map function doesnt support floats.

float mapf(float x, float in_min, float in_max, float out_min, float out_max) {
	float a = x - in_min;
	float b = out_max - out_min;
	float c = in_max - in_min;
	return a * b / c + out_min;
}

// Configure ST7735 display.

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
boolean screenRedraw = 0;

// Global variables.

int screenMenu;								// Screen menu selection.
byte configurationFlag = 0;					// Configuration menu flag.

volatile byte displayBackLight = 1;			// Enable / disable LCD back light.
volatile byte wakeInterrupt = 1;			// Set wake interupt flag.
volatile unsigned int  distanceCounter = 0;	// Counting rotations for distance travelled.

volatile unsigned long passedTime;			// Setting time to calculate speed.
volatile unsigned long startTime;			// Setting time to calculate speed.

volatile unsigned long lastRotation1;		// Checking if wheel is still turning.
volatile unsigned long lastRotation2;		// Checking if wheel is still turning.

float circumference;						// Wheel circumference.
float circImperial;							// Conversion into MPH.

float distanceTravelled = 0.00;				// Total distance travelled.
float speedKph = 0.00;
float speedMph = 0.00;
float rpm = 0.00;

float maxKphSpeed = 0;						// Recording max speed.

char rpmArray[7];							// Holding data in character arrays for formatting reasons.
char kphArray[7];
char mphArray[7];
char maxKphArray[7];
char averageKphSpeedArray[7];
char sessionDistanceArray[7];
char currentSessionTimeArray[7];

// Configure EEEPROM. 

int eeMenuAddress = 0;						// EEPROM address for start menu position.
int eeMenuSetting;							// Actual commit for writing, 4 bytes.
boolean eeMenuSettingChange = false;		// Used for menu scrolling before committing to save EEPROM writes.

int eeCircAddress = 4;						// EEPROM address for circumference.
float eeCircSetting;						// Actual commit for writing, 4 bytes.
boolean eeCircSettingChange = false;		// Used for circumference setting before committing to save EEPROM writes.

int eeTotalDistanceAddress = 8;				// EEPROM address for total distance.
unsigned long eeTotalDistance;				// Actual commit for writing, 4 bytes.
boolean eeTotalDistanceChange = false;		// Used for total distance before committing to save EEPROM writes.

int eeSessionTimeArray1Address = 16;		// EEPROM address for session time 1
unsigned long eeSessionTime1;				// Actual commit for writing, 4 bytes.

int eeSessionTimeArray2Address = 20;		// EEPROM address for session time 2
unsigned long eeSessionTime2;				// Actual commit for writing, 4 bytes.

int eeSessionTimeArray3Address = 24;		// EEPROM address for session time 3
unsigned long eeSessionTime3;				// Actual commit for writing, 4 bytes.

int eeSessionTimeArray4Address = 28;		// EEPROM address for session time 4
unsigned long eeSessionTime4;				// Actual commit for writing, 4 bytes.

int eeSessionTimeArray5Address = 32;		// EEPROM address for session time 5
unsigned long eeSessionTime5;				// Actual commit for writing, 4 bytes.

int eeSessionTimeArray6Address = 36;		// EEPROM address for session time 6
unsigned long eeSessionTime6;				// Actual commit for writing, 4 bytes.

int eeSessionTimeArray7Address = 40;		// EEPROM address for session time 7
unsigned long eeSessionTime7;				// Actual commit for writing, 4 bytes.

int eeSessionDistanceArray1Address = 44;	// EEPROM address for session distance 1
unsigned int eeSessionDistance1;			// Actual commit for writing, 4 bytes.

int eeSessionDistanceArray2Address = 48;	// EEPROM address for session distance 2
unsigned int eeSessionDistance2;			// Actual commit for writing, 4 bytes.

int eeSessionDistanceArray3Address = 52;	// EEPROM address for session distance 3
unsigned int eeSessionDistance3;			// Actual commit for writing, 4 bytes.

int eeSessionDistanceArray4Address = 56;	// EEPROM address for session distance 4
unsigned int eeSessionDistance4;			// Actual commit for writing, 4 bytes.

int eeSessionDistanceArray5Address = 60;	// EEPROM address for session distance 5
unsigned int eeSessionDistance5;			// Actual commit for writing, 4 bytes.

int eeSessionDistanceArray6Address = 64;	// EEPROM address for session distance 6
unsigned int eeSessionDistance6;			// Actual commit for writing, 4 bytes.

int eeSessionDistanceArray7Address = 68;	// EEPROM address for session distance 7
unsigned int eeSessionDistance7;			// Actual commit for writing, 4 bytes.

boolean eeSessionChange = false;			// Used for session time before committing to save EEPROM writes.

int eeResetSettingAddress = 72;				// EEPROM address for master reset
unsigned int eeResetSetting;				// Actual commit for writing, 1 byte.
boolean eeResetSettingChange = false;		// Used for reset setting change before committing to save EEPROM writes.

int eeSessionArrayPositionAddress = 76;		// EEPROM address for array position.
unsigned int eeSessionArrayPosition;		// Actual commit for writing, 4 bytes.

// Average calculation variables.

const int numReadings = 10;

float	readings[numReadings];				// Latest Kph readings.
int		readIndex = 0;						// The index of the current reading.
float	total = 0.00;						// The running total of the readings.
float	averageKphSpeed = 0.00;				// The average speed.

// Session time variables.

unsigned long sessionTimeCap = 10;			// Set cap for graph if statements.
boolean recordSessions = 0;					// Flag to trigger the recording of each session.
volatile boolean sessionTimeFlag = 0;		// Flag to trigger the recording of each session.
volatile unsigned long sessionStartTime;	// Time each pt session starts.
unsigned long sessionTimeArray[7];			// Array for storing 7 sessions.
byte sessionArrayPosition = 0;				// Array position, this is also used for the distance array position.
volatile unsigned long sessionTimeMillis;	// Time each pt session in millis.
volatile unsigned int sessionTime;			// Time each pt session in minutes.

unsigned int sessionTimeArray1;				// These variables are needed for the Kris Kasprzak charts.
unsigned int sessionTimeArray2;
unsigned int sessionTimeArray3;
unsigned int sessionTimeArray4;
unsigned int sessionTimeArray5;
unsigned int sessionTimeArray6;
unsigned int sessionTimeArray7;

// Session distance variables.

unsigned int distanceGraphCap = 20;			// Set cap for graph if statements.
float sessionStartDistance = 0.00;			
float sessionDistance;						// Session distance.
unsigned int distanceTravelledArray[7];		// Array for storing 7 sessions.

unsigned int distanceTravelledArray1;		// These variables are needed for the Kris Kasprzak charts.
unsigned int distanceTravelledArray2;
unsigned int distanceTravelledArray3;
unsigned int distanceTravelledArray4;
unsigned int distanceTravelledArray5;
unsigned int distanceTravelledArray6;
unsigned int distanceTravelledArray7;

// Battery measurement variables.

#define sensitivity (4 / 1024.0)			// Battery sensitivity setting.
unsigned long batteryMeasureInterval = 600000;	// Battery measuring interval.
unsigned long batteryMeasureNow;
float sensorValue;
float sensorValueVolts;
float sensorValuePerc;

// Kris Kasprzak Variables.

boolean dial_1 = true;				// XPH dial.

boolean graph_1 = true;				// Bar graph.
boolean graph_2 = true;
boolean graph_3 = true;
boolean graph_4 = true;
boolean graph_5 = true;
boolean graph_6 = true;
boolean graph_7 = true;

boolean graph_8 = true;				// Bar graph.
boolean graph_9 = true;
boolean graph_10 = true;
boolean graph_11 = true;
boolean graph_12 = true;
boolean graph_13 = true;
boolean graph_14 = true;

// Define colours.

// http://www.barth-dev.de/online/rgb565-color-picker/
#define LTBLUE          0xB6DF
#define LTTEAL          0xBF5F
#define LTGREEN         0xBFF7
#define LTCYAN          0xC7FF
#define LTRED           0xFD34
#define LTMAGENTA       0xFD5F
#define LTYELLOW        0xFFF8
#define LTORANGE        0xFE73
#define LTPINK          0xFDDF
#define LTPURPLE        0xCCFF
#define LTGREY          0xE71C

#define BLUE            0x001F
#define TEAL            0x0438
#define GREEN           0x07E0
#define CYAN            0x07FF
#define RED             0xF800
#define MAGENTA         0xF81F
#define YELLOW          0xFFE0
#define ORANGE          0xFD20
#define PINK            0xF81F
#define PURPLE          0x801F
#define GREY            0xC618
#define WHITE           0xFFFF
#define BLACK           0x0000

#define DKBLUE          0x000D
#define DKTEAL          0x020C
#define DKGREEN         0x03E0
#define DKCYAN          0x03EF
#define DKRED           0x6000
#define DKMAGENTA       0x8008
#define DKYELLOW        0x8400
#define DKORANGE        0x8200
#define DKPINK          0x9009
#define DKPURPLE        0x4010
#define DKGREY          0x4A49

// Define fonts.

#include <Fonts/FreeMonoBoldOblique12pt7b.h>
#include <Fonts/FreeSans9pt7b.h>

/*-----------------------------------------------------------------*/

void setup() {

	// Set pin modes.

	pinMode(interruptMenuButton, INPUT_PULLUP);		// Menu selection interrupt button.
	pinMode(interruptWakeButton, INPUT_PULLUP);		// Wake up and sleep interrupt button.
	pinMode(interruptWheelSensor, INPUT_PULLUP);	// Wheel sensor (REED switch).
	pinMode(bPlus, INPUT_PULLUP);					// Menu button 1.
	pinMode(bMinus, INPUT_PULLUP);					// Menu button 2.
	pinMode(lcdBackLightPin, OUTPUT);				// Output for LCD back light.
	digitalWrite(lcdBackLightPin, HIGH);			// Outout for LCD back light.

	// Configure interrupts.

	attachInterrupt(digitalPinToInterrupt(interruptMenuButton), screenMenuISR, FALLING);
	attachInterrupt(digitalPinToInterrupt(interruptWakeButton), wakeInterruptISR, FALLING);
	gpio_pin_wakeup_enable(GPIO_ID_PIN(interruptWakeButton), GPIO_PIN_INTR_LOLEVEL);
	attachInterrupt(digitalPinToInterrupt(interruptWheelSensor), rotationInterruptISR, FALLING);

	// Configure EEPROM.

	EEPROM.begin(512);
	EEPROM.get(eeResetSettingAddress, eeResetSetting);

	/*
	*
	* This line is used for initial ESP8266 power on from manufacture to set EEPROM, comment out once uploaded and re-upload.
	* 
	* resetSystemDemoData();
	*/

	if (eeResetSetting == 1) {

		resetSystemData();
	}

	else if (eeResetSetting == 2) {

		resetSystemDemoData();
	}
	
	// Load previous settings and last recorded data.

	EEPROM.get(eeMenuAddress, eeMenuSetting);
	EEPROM.get(eeCircAddress, eeCircSetting);
	EEPROM.get(eeMenuAddress, screenMenu);
	EEPROM.get(eeCircAddress, circumference);
	EEPROM.get(eeTotalDistanceAddress, distanceCounter);
	EEPROM.get(eeSessionArrayPositionAddress, sessionArrayPosition);

	EEPROM.commit();

	EEPROM.get(eeSessionTimeArray1Address, sessionTimeArray[0]);
	EEPROM.get(eeSessionTimeArray2Address, sessionTimeArray[1]);
	EEPROM.get(eeSessionTimeArray3Address, sessionTimeArray[2]);
	EEPROM.get(eeSessionTimeArray4Address, sessionTimeArray[3]);
	EEPROM.get(eeSessionTimeArray5Address, sessionTimeArray[4]);
	EEPROM.get(eeSessionTimeArray6Address, sessionTimeArray[5]);
	EEPROM.get(eeSessionTimeArray7Address, sessionTimeArray[6]);

	EEPROM.commit();

	sessionTimeArray1 = sessionTimeArray[0] / 1000 / 60;
	sessionTimeArray2 = sessionTimeArray[1] / 1000 / 60;
	sessionTimeArray3 = sessionTimeArray[2] / 1000 / 60;
	sessionTimeArray4 = sessionTimeArray[3] / 1000 / 60;
	sessionTimeArray5 = sessionTimeArray[4] / 1000 / 60;
	sessionTimeArray6 = sessionTimeArray[5] / 1000 / 60;
	sessionTimeArray7 = sessionTimeArray[6] / 1000 / 60;

	EEPROM.get(eeSessionDistanceArray1Address, distanceTravelledArray[0]);
	EEPROM.get(eeSessionDistanceArray2Address, distanceTravelledArray[1]);
	EEPROM.get(eeSessionDistanceArray3Address, distanceTravelledArray[2]);
	EEPROM.get(eeSessionDistanceArray4Address, distanceTravelledArray[3]);
	EEPROM.get(eeSessionDistanceArray5Address, distanceTravelledArray[4]);
	EEPROM.get(eeSessionDistanceArray6Address, distanceTravelledArray[5]);
	EEPROM.get(eeSessionDistanceArray7Address, distanceTravelledArray[6]);

	EEPROM.commit();

	distanceTravelledArray1 = distanceTravelledArray[0];
	distanceTravelledArray2 = distanceTravelledArray[1];
	distanceTravelledArray3 = distanceTravelledArray[2];
	distanceTravelledArray4 = distanceTravelledArray[3];
	distanceTravelledArray5 = distanceTravelledArray[4];
	distanceTravelledArray6 = distanceTravelledArray[5];
	distanceTravelledArray7 = distanceTravelledArray[6];

	// Ensure menu position, circumference & array position are within parametres.

	if (screenMenu < 0 || screenMenu > 4) {

		screenMenu = 0;

	} // Close if.

	if (circumference < 0 || circumference > 2) {

		circumference = 1.0;

	} // Close if.

	if (sessionArrayPosition < 0 || sessionArrayPosition > 6) {

		sessionArrayPosition = 0;

	} // Close if.

	// Initialise TFT display.

	tft.initR(INITR_BLACKTAB);      // Init ST7735S chip, black tab.
	tft.setRotation(1);
	tft.setCursor(0, 0);
	tft.fillScreen(ST77XX_BLACK);

	// Start up screen, hamster image.

	tft.fillScreen(ST77XX_WHITE);

	int h = 80, w = 112, row, col, buffidx = 0;

	for (row = 16; row < h; row++) {			// For each scanline.
		
		for (col = 48; col < w; col++) {		// For each pixel, read from Flash Memory, since image is stored as uint16_t, pgm_read_word is used as it uses 16bit address.
			tft.drawPixel(col, row, pgm_read_word(startScreen + buffidx));
			buffidx++;
		
		} // End for loop.

	} // End for loop.

	tft.setFont(&FreeSans9pt7b);
	tft.setTextSize(1);
	tft.setTextColor(ST77XX_BLACK);
	tft.setCursor(55, 105);
	tft.println("PetBit");
	
	delay(2000);

	tft.fillScreen(ST77XX_BLACK);

	// Configure rotation parametres.

	circImperial = circumference * 0.62137; // convert metric to imperial for MPH calculations.

	// Blank speed & distance variables.

	rpm = 0.00;
	speedKph = 0.00;
	speedMph = 0.00;
	maxKphSpeed = 0.00;
	averageKphSpeed = 0.00;
	sessionDistance = 0.00;

	// Set average array to 0.

	for (int thisReading = 0; thisReading < numReadings; thisReading++) {
		readings[thisReading] = 0;
	}

	// Set battery measuring period and check initial capacity.
		
	batteryMeasureNow = millis() - batteryMeasureInterval;	// Set initial level so first measurement is made.
	batteryLevel();											// Calculates battery level.
	batteryMeasureNow = millis();							// Reset measurement to match interval.

} // Close setup.

/*-----------------------------------------------------------------*/

void loop() {

	mainData();						// Calculates main data.
	batteryLevel();					// Calculates battery level.
	lcdBackLight();					// Interrupt to disable back light.
	lightSleep();					// Interrupt to send ESP to sleep.
	averageSpeed();					// Calculate average speed.

	if (screenMenu == 0) {

		if (screenRedraw == 1) {

			tft.fillScreen(ST77XX_BLACK);
			screenRedraw = 0;

		} // Close if.

		configurationDisplay();				// Start up display.

	} // Close if.

	if (screenMenu == 1) {

		if (screenRedraw == 1) {

			tft.fillScreen(ST77XX_BLACK);
			screenRedraw = 0;

		} // Close if.

		XphDialScreen(tft, 80, 64, 60, 0, 20, 2, 210, speedKph, 2, 0, RED, WHITE, BLACK, "Xph", dial_1); // XPH dial screen function.

	} // Close if.

	if (screenMenu == 2) {

		if (screenRedraw == 1) {

			tft.fillScreen(ST77XX_BLACK);
			screenRedraw = 0;

		} // Close if.

		CurrentExerciseScreen();	// Current exercise screen.

	} // Close if.

	if (screenMenu == 3) {

		if (screenRedraw == 1) {

			tft.fillScreen(ST77XX_BLACK);
			screenRedraw = 0;

		} // Close if.

		// Session time bar graphs.

		if (sessionTimeArray1 <= 10) {

			ptSessionTimeV1(tft, 1, 110, 8, 80, 0, 10, 1, sessionTimeArray1, 3, 0, CYAN, DKGREY, WHITE, WHITE, BLACK, "1", graph_1);

		} // Close if.

		else ((ptSessionTimeV1(tft, 1, 110, 8, 80, 0, 10, 1, sessionTimeCap, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "1", graph_1)));

		if (sessionTimeArray2 <= 10) {

			ptSessionTimeV2(tft, 21, 110, 8, 80, 0, 10, 1, sessionTimeArray2, 3, 0, CYAN, DKGREY, WHITE, WHITE, BLACK, "2", graph_2);

		} // Close if.

		else ((ptSessionTimeV2(tft, 21, 110, 8, 80, 0, 10, 1, sessionTimeCap, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "2", graph_2)));

		if (sessionTimeArray3 <= 10) {

			ptSessionTimeV2(tft, 41, 110, 8, 80, 0, 10, 1, sessionTimeArray3, 3, 0, CYAN, DKGREY, WHITE, WHITE, BLACK, "3", graph_3);

		} // Close if.

		else ((ptSessionTimeV2(tft, 41, 110, 8, 80, 0, 10, 1, sessionTimeCap, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "3", graph_3)));

		if (sessionTimeArray4 <= 10) {

			ptSessionTimeV2(tft, 61, 110, 8, 80, 0, 10, 1, sessionTimeArray4, 3, 0, CYAN, DKGREY, WHITE, WHITE, BLACK, "4", graph_4);

		} // Close if.

		else ((ptSessionTimeV2(tft, 61, 110, 8, 80, 0, 10, 1, sessionTimeCap, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "4", graph_4)));

		if (sessionTimeArray5 <= 10) {

			ptSessionTimeV2(tft, 81, 110, 8, 80, 0, 10, 1, sessionTimeArray5, 3, 0, CYAN, DKGREY, WHITE, WHITE, BLACK, "5", graph_5);

		} // Close if.

		else ((ptSessionTimeV2(tft, 81, 110, 8, 80, 0, 10, 1, sessionTimeCap, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "5", graph_5)));

		if (sessionTimeArray6 <= 10) {

			ptSessionTimeV2(tft, 101, 110, 8, 80, 0, 10, 1, sessionTimeArray6, 3, 0, CYAN, DKGREY, WHITE, WHITE, BLACK, "6", graph_6);

		} // Close if.

		else ((ptSessionTimeV2(tft, 101, 110, 8, 80, 0, 10, 1, sessionTimeCap, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "6", graph_6)));

		if (sessionTimeArray7 <= 10) {

			ptSessionTimeV3(tft, 121, 110, 8, 80, 0, 10, 1, sessionTimeArray7, 3, 0, CYAN, DKGREY, WHITE, WHITE, BLACK, "7", graph_7);

		} // Close if.

		else ((ptSessionTimeV3(tft, 121, 110, 8, 80, 0, 10, 1, sessionTimeCap, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "7", graph_7)));

	} // Close if.

	if (screenMenu == 4) {

		if (screenRedraw == 1) {

			tft.fillScreen(ST77XX_BLACK);
			screenRedraw = 0;

		} // Close if.

		// Distance bar graphs.

		if (distanceTravelledArray1 <= 15) {

			ptSessionDistanceV1(tft, 1, 110, 8, 80, 0, 20, 2, distanceTravelledArray1, 3, 0, CYAN, DKGREY, WHITE, WHITE, BLACK, "1", graph_8);

		} // Close if.

		else if (distanceTravelledArray1 >= 20) {

			ptSessionDistanceV1(tft, 1, 110, 8, 80, 0, 20, 2, distanceGraphCap, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "1", graph_8);

		} // Close else if.

		else ((ptSessionDistanceV1(tft, 1, 110, 8, 80, 0, 20, 2, distanceTravelledArray1, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "1", graph_8)));

		if (distanceTravelledArray2 <= 15) {

			ptSessionDistanceV2(tft, 21, 110, 8, 80, 0, 20, 2, distanceTravelledArray2, 3, 0, CYAN, DKGREY, WHITE, WHITE, BLACK, "2", graph_9);

		} // Close if.

		else if (distanceTravelledArray2 >= 20) {

			ptSessionDistanceV2(tft, 21, 110, 8, 80, 0, 20, 2, distanceGraphCap, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "2", graph_9);

		} // Close else if.

		else ((ptSessionDistanceV2(tft, 21, 110, 8, 80, 0, 20, 2, distanceTravelledArray2, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "2", graph_9)));

		if (distanceTravelledArray3 <= 15) {

			ptSessionDistanceV2(tft, 41, 110, 8, 80, 0, 20, 2, distanceTravelledArray3, 3, 0, CYAN, DKGREY, WHITE, WHITE, BLACK, "3", graph_10);

		} // Close if.

		else if (distanceTravelledArray3 >= 20) {

			ptSessionDistanceV2(tft, 41, 110, 8, 80, 0, 20, 2, distanceGraphCap, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "3", graph_10);

		} // Close else if.

		else ((ptSessionDistanceV2(tft, 41, 110, 8, 80, 0, 20, 2, distanceTravelledArray3, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "3", graph_10)));

		if (distanceTravelledArray4 <= 15) {

			ptSessionDistanceV2(tft, 61, 110, 8, 80, 0, 20, 2, distanceTravelledArray4, 3, 0, CYAN, DKGREY, WHITE, WHITE, BLACK, "4", graph_11);

		} // Close if.

		else if (distanceTravelledArray4 >= 20) {

			ptSessionDistanceV2(tft, 61, 110, 8, 80, 0, 20, 2, distanceGraphCap, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "4", graph_11);

		} // Close else if.

		else ((ptSessionDistanceV2(tft, 61, 110, 8, 80, 0, 20, 2, distanceTravelledArray4, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "4", graph_11)));

		if (distanceTravelledArray5 <= 15) {

			ptSessionDistanceV2(tft, 81, 110, 8, 80, 0, 20, 2, distanceTravelledArray5, 3, 0, CYAN, DKGREY, WHITE, WHITE, BLACK, "5", graph_12);

		} // Close if.

		else if (distanceTravelledArray5 >= 20) {

			ptSessionDistanceV2(tft, 81, 110, 8, 80, 0, 20, 2, distanceGraphCap, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "5", graph_12);

		} // Close else if.

		else ((ptSessionDistanceV2(tft, 81, 110, 8, 80, 0, 20, 2, distanceTravelledArray5, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "5", graph_12)));

		if (distanceTravelledArray6 <= 15) {

			ptSessionDistanceV2(tft, 101, 110, 8, 80, 0, 20, 2, distanceTravelledArray6, 3, 0, CYAN, DKGREY, WHITE, WHITE, BLACK, "6", graph_13);

		} // Close if.

		else if (distanceTravelledArray6 >= 20) {

			ptSessionDistanceV2(tft, 101, 110, 8, 80, 0, 20, 2, distanceGraphCap, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "6", graph_13);

		} // Close else if.

		else ((ptSessionDistanceV2(tft, 101, 110, 8, 80, 0, 20, 2, distanceTravelledArray6, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "6", graph_13)));

		if (distanceTravelledArray7 <= 15) {

			ptSessionDistanceV3(tft, 121, 110, 8, 80, 0, 20, 2, distanceTravelledArray7, 3, 0, CYAN, DKGREY, WHITE, WHITE, BLACK, "7", graph_14);

		} // Close if.

		else if (distanceTravelledArray7 >= 20) {

			ptSessionDistanceV3(tft, 121, 110, 8, 80, 0, 20, 2, distanceGraphCap, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "7", graph_14);

		} // Close else if.

		else ((ptSessionDistanceV3(tft, 121, 110, 8, 80, 0, 20, 2, distanceTravelledArray7, 3, 0, RED, DKGREY, WHITE, WHITE, BLACK, "7", graph_14)));

	} // Close if.

	// Check for new max speed.

	if (speedKph > maxKphSpeed) {

		maxKphSpeed = speedKph;

	} // Close if.

	// Calculate average speed & remove any minus calculations.

	averageKphSpeed = total / numReadings;

	if (averageKphSpeed < 0.99) {

		averageKphSpeed = 0.00;

	}  // Close if.

}  // Close loop.

/*-----------------------------------------------------------------*/

void batteryLevel() {

	if (millis() >= batteryMeasureNow + batteryMeasureInterval) {

		// Battery voltage level detection.

		sensorValue = analogRead(A0);
		sensorValueVolts = sensorValue * sensitivity;

		// mapf(input_value, in_min, in_max, out_min, out_max).
		sensorValuePerc = mapf(sensorValueVolts, 3.0, 4.0, 0, 100);

		batteryMeasureNow = millis();

	} // Close if.

} // Close function.

/*-----------------------------------------------------------------*/

void mainData() {

	// Set speed variables to "0.00" if the wheel doesnt turn for X period (currently 4000ms).

	if (lastRotation2 < millis()) {

		rpm = 0.00;
		speedKph = 0.00;
		speedMph = 0.00;
		recordSessions = 1;
		eeSessionChange = true;

	} // Close if.

	else {

		// Calculate current session time.

		sessionTimeMillis = millis() - sessionStartTime;
		sessionTime = sessionTimeMillis / 10 / 60;

	} // Close else.
	

	// Ensure data is always "0" or greater, if not set to "0"

	if ((rpm >= 0) || (speedKph >= 0) || (speedMph >= 0)) {

	} // Close if.

	else {
		rpm = 0.00;
		speedKph = 0.00;
		speedMph = 0.00;

	} // Close else.

	if ((sessionTimeFlag == 1) && (recordSessions == 1)) {							// Calculate session duration.

		sessionTimeArray[sessionArrayPosition] = millis() - sessionStartTime;		// Calculate last session time in millis & store into array.
		distanceTravelledArray[sessionArrayPosition] = distanceTravelled - sessionStartDistance; // Store distance travelled into array.

		if (eeSessionChange == true) {

			switch (sessionArrayPosition) {

			case 0:

				sessionTimeArray1 = sessionTimeArray[0] / 1000 / 60;					// Divided by 1000 for millis to seconds, then divided by 60 for minutes.
				distanceTravelledArray1 = distanceTravelledArray[0];					// Update chart data.
				EEPROM.put(eeSessionTimeArray1Address, sessionTimeArray[0]);			// Record the chart data in EEPROM.
				EEPROM.put(eeSessionDistanceArray1Address, distanceTravelledArray[0]);	// Record the chart data in EEPROM.
				EEPROM.commit();
				eeSessionChange = false;

			case 1: 

				sessionTimeArray2 = sessionTimeArray[1] / 1000 / 60;
				distanceTravelledArray2 = distanceTravelledArray[1];
				EEPROM.put(eeSessionTimeArray2Address, sessionTimeArray[1]);
				EEPROM.put(eeSessionDistanceArray2Address, distanceTravelledArray[1]);
				EEPROM.commit();
				eeSessionChange = false;

			case 2:
				
				sessionTimeArray3 = sessionTimeArray[2] / 1000 / 60;
				distanceTravelledArray3 = distanceTravelledArray[2]; 
				EEPROM.put(eeSessionTimeArray3Address, sessionTimeArray[2]);
				EEPROM.put(eeSessionDistanceArray3Address, distanceTravelledArray[2]);
				EEPROM.commit();
				eeSessionChange = false;

			case 3:

				sessionTimeArray4 = sessionTimeArray[3] / 1000 / 60;
				distanceTravelledArray4 = distanceTravelledArray[3]; 
				EEPROM.put(eeSessionTimeArray4Address, sessionTimeArray[3]);
				EEPROM.put(eeSessionDistanceArray4Address, distanceTravelledArray[3]);
				EEPROM.commit();
				eeSessionChange = false;

			case 4:

				sessionTimeArray5 = sessionTimeArray[4] / 1000 / 60;
				distanceTravelledArray5 = distanceTravelledArray[4]; 
				EEPROM.put(eeSessionTimeArray5Address, sessionTimeArray[4]);
				EEPROM.put(eeSessionDistanceArray5Address, distanceTravelledArray[4]);
				EEPROM.commit();
				eeSessionChange = false;

			case 5:

				sessionTimeArray6 = sessionTimeArray[5] / 1000 / 60;
				distanceTravelledArray6 = distanceTravelledArray[5]; 
				EEPROM.put(eeSessionTimeArray6Address, sessionTimeArray[5]);
				EEPROM.put(eeSessionDistanceArray6Address, distanceTravelledArray[5]); 
				EEPROM.commit();
				eeSessionChange = false;

			case 6:

				sessionTimeArray7 = sessionTimeArray[6] / 1000 / 60;
				distanceTravelledArray7 = distanceTravelledArray[6]; 
				EEPROM.put(eeSessionTimeArray7Address, sessionTimeArray[6]);
				EEPROM.put(eeSessionDistanceArray7Address, distanceTravelledArray[6]);
				EEPROM.commit();
				eeSessionChange = false;

			} // Close switch case.

		} // Close if.

		sessionArrayPosition++;													// Increment sessionTimeArrayPosition.

		if (sessionArrayPosition >= 7) {										// Check array position is within parametres.

			sessionArrayPosition = 0;

		} // Close if.

		EEPROM.put(eeSessionArrayPositionAddress, sessionArrayPosition);		// Record the next array position in EEPROM.
		EEPROM.commit();

		sessionTimeFlag = 0;
		recordSessions = 0;

		if (eeTotalDistanceChange == true) {

			EEPROM.put(eeTotalDistanceAddress, distanceCounter);
			EEPROM.commit();
			eeTotalDistanceChange = false;

		} // Close if.

	} // Close if.

	// Calculate current session distance travelled.

	sessionDistance = distanceTravelled - sessionStartDistance;

	if (maxKphSpeed == 0) {				// Reset start up session distance displayed to zero, otherwise it displays current total distance.

		sessionDistance = 0;
	
	} // Close if.

	if (sessionTime == 0) {

		// Reset max speed.

		maxKphSpeed = 0;
	
	} // Close if.
	
	/*
	Configure speed varibales to the same format for screen layout using dtostrf.

	dtostrf(floatvar, StringLengthIncDecimalPoint, numVarsAfterDecimal, charbuf);

	where

		floatvar					float variable.
		StringLengthIncDecimalPoint	This is the length of the string that will be created.
		numVarsAfterDecimal			The number of digits after the deimal point to print.
		charbuf						The array to store the results*/

	dtostrf(rpm, 6, 2, rpmArray);
	dtostrf(speedKph, 6, 2, kphArray);
	dtostrf(speedMph, 6, 2, mphArray);
	dtostrf(maxKphSpeed, 6, 2, maxKphArray);
	dtostrf(averageKphSpeed, 6, 2, averageKphSpeedArray);
	dtostrf(sessionDistance, 6, 0, sessionDistanceArray);
	dtostrf(sessionTime, 6, 0, currentSessionTimeArray);

	} // Close function.

/*-----------------------------------------------------------------*/

void configurationDisplay() {

	// Drawing thicker rectangle with for loop, function, X, Y, W, H, colour.

	for (uint16_t a = 0; a < 2; a++) {

		tft.drawRect(0 + a, 0 + a, 158, 127, WHITE);

	}  // Close for loop.

	EEPROM.get(eeMenuAddress, eeMenuSetting);
	EEPROM.get(eeCircAddress, eeCircSetting);
	EEPROM.get(eeResetSettingAddress, eeResetSetting);
	tft.setCursor(0, 0);

	tft.setFont(&FreeSans9pt7b);
	tft.setTextSize(1);
	tft.setTextColor(ST77XX_WHITE);
	tft.setCursor(27, 20);
	tft.println("Battery Level");

	tft.setFont();
	tft.setTextSize(1);
	tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK);
	tft.setCursor(35, 28);
	tft.print("V: ");
	tft.println(sensorValueVolts);
	tft.setCursor(35, 38);
	tft.print("%: ");
	tft.println(int(sensorValuePerc));
	tft.println();

	if (sensorValuePerc > 95) {

	drawBatteryBitmap(27, 90, ccBatt100, 32, 18);

	}

	else if (sensorValuePerc > 79 && sensorValuePerc < 95) {

		drawBatteryBitmap(27, 90, ccBatt80, 32, 18);

	}

	else if (sensorValuePerc > 59 && sensorValuePerc < 80) {

		drawBatteryBitmap(27, 90, ccBatt60, 32, 18);

	}

	else if (sensorValuePerc > 39 && sensorValuePerc < 60) {

		drawBatteryBitmap(27, 90, ccBatt40, 32, 18);

	}

	else if (sensorValuePerc > 19 && sensorValuePerc < 40) {

		drawBatteryBitmap(27, 90, ccBatt20, 32, 18);

	}

	else if (sensorValuePerc < 20) {

		drawBatteryBitmap(27, 90, ccBatt00, 32, 18);

	}

	tft.setFont(&FreeSans9pt7b);
	tft.setTextSize(1);
	tft.setTextColor(ST77XX_WHITE);
	tft.setCursor(27, 65);
	tft.println("Configuration");

	tft.setFont();
	tft.setTextSize(1);
	tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK);

	if (configurationFlag == 3) {

		tft.setTextColor(ST77XX_RED, ST77XX_BLACK);

	} // Close if.

	else tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK);

	tft.setCursor(15, 70);
	tft.print("System Reset     : ");
	tft.println(eeResetSetting);

	if (configurationFlag == 2) {

		tft.setTextColor(ST77XX_RED, ST77XX_BLACK);

	} // Close if.

	else tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK);

	tft.setCursor(15, 80);
	tft.print("Circumference    : ");
	tft.println(eeCircSetting);
	tft.println();
	tft.setCursor(15, 90);

	if (configurationFlag == 1) {

		tft.setTextColor(ST77XX_RED, ST77XX_BLACK);

	} // Close if.

	else tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK);

	tft.print("Screen Menu Strt : ");
	tft.println(eeMenuSetting);
	tft.setCursor(15, 105);
	
	tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK);
	tft.print("Total Distance To Date");
	tft.setCursor(70, 115);
	tft.println(distanceTravelled = distanceCounter * circumference);

	if (digitalRead(bPlus) == LOW && (digitalRead(bMinus) == LOW)) {

		if (configurationFlag == 4) {

			configurationFlag = 0;

		}

		configurationFlag++;

	} // Close if.

	if (digitalRead(bPlus) == LOW && configurationFlag == 1)
	{
		if (eeMenuSetting == 4)
		{
			eeMenuSetting = 0;
			eeMenuSettingChange = true;

		}
		else
		{
			eeMenuSetting++;
			eeMenuSettingChange = true;
		}

	} // Close if.

	if (digitalRead(bMinus) == LOW && configurationFlag == 1)
	{
		if (eeMenuSetting == 0)
		{
			eeMenuSetting = 4;
			eeMenuSettingChange = true;
		}
		else
		{
			eeMenuSetting--;
			eeMenuSettingChange = true;
		}

	} // Close if.

		// Write menu setting to EEPROM.

	if (eeMenuSettingChange == true) {

		EEPROM.put(eeMenuAddress, eeMenuSetting);
		EEPROM.commit();
		eeMenuSettingChange = false;

	} // Close if.

	if (digitalRead(bPlus) == LOW && configurationFlag == 2)
	{
		if (eeCircSetting > 2.00)
		{
			eeCircSetting = 0.00;
			eeCircSettingChange = true;

		}
		else
		{
			eeCircSetting = eeCircSetting + 0.01;
			eeCircSettingChange = true;
		}

	} // Close if.

	if (digitalRead(bMinus) == LOW && configurationFlag == 2)
	{
		if (eeCircSetting < 0.00)
		{
			eeCircSetting = 2.00;
			eeCircSettingChange = true;
		}
		else
		{
			eeCircSetting = eeCircSetting - 0.01;
			eeCircSettingChange = true;
		}

	} // Close if.

	// Write debug setting to EEPROM.

	if (eeCircSettingChange == true) {

		EEPROM.put(eeCircAddress, eeCircSetting);
		EEPROM.commit();
		eeCircSettingChange = false;

	} // Close if.

	if (digitalRead(bPlus) == LOW && configurationFlag == 3)
	{
		if (eeResetSetting == 2)
		{
			eeResetSetting = 0;
			eeResetSettingChange = true;

		}
		else
		{
			eeResetSetting++;
			eeResetSettingChange = true;
		}

	} // Close if.

	if (digitalRead(bMinus) == LOW && configurationFlag == 3)
	{
		if (eeResetSetting == 0)
		{
			eeResetSetting = 2;
			eeResetSettingChange = true;
		}
		else
		{
			eeResetSetting--;
			eeResetSettingChange = true;
		}

	} // Close if.

	// Write menu setting to EEPROM.

	if (eeResetSettingChange == true) {

		EEPROM.put(eeResetSettingAddress, eeResetSetting);
		EEPROM.commit();
		eeResetSettingChange = false;

	} // Close if.

} // Close function.

/*-----------------------------------------------------------------*/

void CurrentExerciseScreen() {

	// Drawing thicker rectangle with Foor Loop, function, X, Y, W, H, colour.

	for (uint16_t a = 0; a < 2; a++) {

		tft.drawRect(0 + a, 0 + a, 159, 127, WHITE);

	}  // Close for loop.

	tft.setFont(&FreeSans9pt7b);
	tft.setTextSize(1);
	tft.setTextColor(ST77XX_WHITE);
	tft.setCursor(14, 20);
	tft.print("Current Session");

	tft.setTextSize(1);
	tft.setTextColor(ST77XX_WHITE);

	tft.setCursor(15, 40);
	tft.print("Xph: ");
	tft.setCursor(15, 60);
	tft.print("Ave: ");
	tft.setCursor(15, 80);
	tft.print("Max: ");
	tft.setCursor(15, 100);
	tft.print("Dis: ");
	tft.setCursor(15, 120);
	tft.print("Time: ");

	tft.setFont();
	tft.setTextSize(2);
	tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK);

	tft.setCursor(72, 28);
	tft.println(kphArray);

	tft.setCursor(72, 48);
	tft.println(averageKphSpeedArray);

	tft.setCursor(72, 68);
	tft.println(maxKphArray);

	tft.setCursor(72, 88);
	tft.println(sessionDistanceArray);

	tft.setCursor(72, 108);
	tft.println(currentSessionTimeArray);

} // Close function.

/*-----------------------------------------------------------------*/

void XphDialScreen(Adafruit_ST7735& Screen, int cx, int cy, int r, int loval, double hival, double inc, double sa, double curval, int dig, int dec, unsigned int needlecolor, unsigned int dialcolor, unsigned int  textcolor, String label, boolean& redraw) {

	double ix, iy, ox, oy, tx, ty, lx, rx, ly, ry, i, offset, stepval, data, angle;
	double degtorad = .0174532778;
	static double px = cx, py = cy, pix = cx, piy = cy, plx = cx, ply = cy, prx = cx, pry = cy;

	// Draw the dial only one time--this will minimize flicker.

	if (redraw == true) {
		redraw = false;
		Screen.fillCircle(cx, cy, r - 2, dialcolor);
		Screen.drawCircle(cx, cy, r, needlecolor);
		Screen.drawCircle(cx, cy, r - 1, needlecolor);
		Screen.setTextColor(textcolor, dialcolor);
		Screen.setTextSize(1);
		Screen.setFont(&FreeSans9pt7b);
		Screen.setCursor(cx - 15, cy + 30);
		Screen.println(label);
		Screen.setFont();
	}

	// Draw the current value.

	Screen.setTextSize(1);
	Screen.setTextColor(textcolor, dialcolor);
	Screen.setCursor(cx - 7, cy + 40);
	Screen.println(Format(curval, dig, dec));

	// Center the scale about the vertical axis--and use this to offset the needle, and scale text.

	offset = (270 + sa / 2) * degtorad;

	// Find the scale step value based on the hival low val and the scale sweep angle.
	// Deducting a small value to eliminate round off errors, this val may need to be adjusted.

	stepval = (inc) * (double(sa) / (double(hival - loval))) + .00;

	// Draw the scale and numbers, note draw this each time to repaint where the needle was.

	for (i = 0; i <= sa; i += stepval) {
		angle = (i * degtorad);
		angle = offset - angle;
		ox = (r - 2) * cos(angle) + cx;
		oy = (r - 2) * sin(angle) + cy;
		ix = (r - 10) * cos(angle) + cx;
		iy = (r - 10) * sin(angle) + cy;
		tx = (r - 10) * cos(angle) + cx;
		ty = (r - 15) * sin(angle) + cy;
		Screen.drawLine(ox, oy, ix, iy, textcolor);
		Screen.setTextSize(1.5);
		Screen.setTextColor(textcolor, dialcolor);
		Screen.setCursor(tx - 7, ty);
		data = hival - (i * (inc / stepval));
		Screen.println(Format(data, dig, dec));
	}

	// Compute and draw the needle.

	angle = (sa * (1 - (((curval - loval) / (hival - loval)))));
	angle = angle * degtorad;
	angle = offset - angle;
	ix = (r - 10) * cos(angle) + cx;
	iy = (r - 10) * sin(angle) + cy;

	// Draw a triangle for the needle (compute and store 3 vertiticies).

	lx = 5 * cos(angle - 90 * degtorad) + cx;
	ly = 5 * sin(angle - 90 * degtorad) + cy;
	rx = 5 * cos(angle + 90 * degtorad) + cx;
	ry = 5 * sin(angle + 90 * degtorad) + cy;

	// First draw the previous needle in dial color to hide it, note draw performance for triangle is pretty bad.

	//d.fillTriangle (pix, piy, plx, ply, prx, pry, dialcolor);
	//d.fillTriangle (pix, piy, plx, ply, prx, pry, dialcolor);

	//d.fillTriangle (pix, piy, plx, ply, prx - 20, pry - 20, dialcolor);
	//d.fillTriangle (pix, piy, prx, pry, prx + 20, pry + 20, dialcolor);

	Screen.fillTriangle(pix, piy, plx, ply, prx, pry, dialcolor);
	Screen.drawTriangle(pix, piy, plx, ply, prx, pry, dialcolor);

	// Then draw the old needle in need color to display it.

	Screen.fillTriangle(ix, iy, lx, ly, rx, ry, needlecolor);
	Screen.drawTriangle(ix, iy, lx, ly, rx, ry, textcolor);

	// Draw a cute little dial center.

	Screen.fillCircle(cx, cy, 8, textcolor);

	//Save all current to old so the previous dial can be hidden.

	pix = ix;
	piy = iy;
	plx = lx;
	ply = ly;
	prx = rx;
	pry = ry;

} // Close function.

/*-----------------------------------------------------------------*/

void ptSessionTimeV1(Adafruit_ST7735& Screen, double x, double y, double w, double h, double loval, double hival, double inc, double curval, int dig, int dec, unsigned int barcolor, unsigned int voidcolor, unsigned int bordercolor, unsigned int textcolor, unsigned int backcolor, String label, boolean& redraw) {

	Screen.setFont(&FreeSans9pt7b);
	Screen.setTextSize(1);
	Screen.setTextColor(ST77XX_WHITE);
	Screen.setCursor(20, 20);
	Screen.println("Session Times");
	Screen.setFont();

	double stepval, range;
	double my, level;
	double i, data;
	// draw the border, scale, and label once.
	// avoid doing this on every update to minimize flicker.
	if (redraw == true) {
		redraw = false;

		Screen.drawRect(x - 1, y - h - 1, w + 2, h + 2, bordercolor);
		Screen.setTextColor(textcolor, backcolor);
		Screen.setTextSize(1);
		Screen.setCursor(x + 2, y + 7);
		Screen.println(label);
		// step val basically scales the hival and low val to the height
		// deducting a small value to eliminate round off errors
		// this val may need to be adjusted.
		stepval = (inc) * (double(h) / (double(hival - loval))) - 0;
		for (i = 0; i <= h; i += stepval) {
			my = y - h + i;
			Screen.drawFastHLine(x + w + 1, my + 1, 5, textcolor);
			// draw lables
			Screen.setTextSize(1);
			Screen.setTextColor(BLACK, backcolor);
			Screen.setCursor(x + w + 12, my - 3);
			data = hival - (i * (inc / stepval));
			Screen.println(Format(data, dig, dec));
			Screen.setFont();
		}
	}
	// compute level of bar graph that is scaled to the  height and the hi and low vals
	// this is needed to accompdate for +/- range
	level = (h * (((curval - loval) / (hival - loval))));
	// draw the bar graph
	// write a upper and lower bar to minimize flicker cause by blanking out bar and redraw on update
	Screen.fillRect(x, y - h, w, h - level, voidcolor);
	Screen.fillRect(x, y - level + 1, w, level, barcolor);
	// write the current value
	/*
	  tft.setTextColor(textcolor, backcolor);
	  tft.setTextSize(1);
	  tft.setCursor(x , y - h - 23);
	  tft.println(Format(curval, dig, dec));
	*/

}  // Close function.

/*-----------------------------------------------------------------*/

void ptSessionTimeV2(Adafruit_ST7735& Screen, double x, double y, double w, double h, double loval, double hival, double inc, double curval, int dig, int dec, unsigned int barcolor, unsigned int voidcolor, unsigned int bordercolor, unsigned int textcolor, unsigned int backcolor, String label, boolean& redraw) {

	double stepval, range;
	double my, level;
	double i, data;
	// draw the border, scale, and label once
	// avoid doing this on every update to minimize flicker
	if (redraw == true) {
		redraw = false;

		Screen.drawRect(x - 1, y - h - 1, w + 2, h + 2, bordercolor);
		Screen.setTextColor(textcolor, backcolor);
		Screen.setTextSize(1);
		Screen.setCursor(x + 2, y + 7);
		Screen.println(label);
		// step val basically scales the hival and low val to the height
		// deducting a small value to eliminate round off errors
		// this val may need to be adjusted
		stepval = (inc) * (double(h) / (double(hival - loval))) - 0;
		for (i = 0; i <= h; i += stepval) {
			my = y - h + i;
			Screen.drawFastHLine(x + w + 1, my + 1, 5, textcolor);
			// draw lables
			Screen.setTextSize(1);
			Screen.setTextColor(BLACK, backcolor);
			Screen.setCursor(x + w + 12, my - 3);
			data = hival - (i * (inc / stepval));
			Screen.println(Format(data, dig, dec));
		}
	}
	// compute level of bar graph that is scaled to the  height and the hi and low vals
	// this is needed to accompdate for +/- range
	level = (h * (((curval - loval) / (hival - loval))));
	// draw the bar graph
	// write a upper and lower bar to minimize flicker cause by blanking out bar and redraw on update
	Screen.fillRect(x, y - h, w, h - level, voidcolor);
	Screen.fillRect(x, y - level + 1, w, level, barcolor);
	// write the current value
	/*
	  tft.setTextColor(textcolor, backcolor);
	  tft.setTextSize(1);
	  tft.setCursor(x , y - h - 23);
	  tft.println(Format(curval, dig, dec));
	*/

} // Close function.

/*-----------------------------------------------------------------*/

void ptSessionTimeV3(Adafruit_ST7735& Screen, double x, double y, double w, double h, double loval, double hival, double inc, double curval, int dig, int dec, unsigned int barcolor, unsigned int voidcolor, unsigned int bordercolor, unsigned int textcolor, unsigned int backcolor, String label, boolean& redraw) {

	double stepval, range;
	double my, level;
	double i, data;
	// draw the border, scale, and label once
	// avoid doing this on every update to minimize flicker
	if (redraw == true) {
		redraw = false;

		Screen.drawRect(x - 1, y - h - 1, w + 2, h + 2, bordercolor);
		Screen.setTextColor(textcolor, backcolor);
		Screen.setTextSize(1);
		Screen.setCursor(x + 2, y + 7);
		Screen.println(label);
		// step val basically scales the hival and low val to the height
		// deducting a small value to eliminate round off errors
		// this val may need to be adjusted
		stepval = (inc) * (double(h) / (double(hival - loval))) - 0;
		for (i = 0; i <= h; i += stepval) {
			my = y - h + i;
			Screen.drawFastHLine(x + w + 1, my + 1, 5, textcolor);
			// draw lables
			Screen.setTextSize(1);
			Screen.setTextColor(textcolor, backcolor);
			Screen.setCursor(x + w + 12, my - 3);
			data = hival - (i * (inc / stepval));
			Screen.println(Format(data, dig, dec));
		}
	}
	// compute level of bar graph that is scaled to the  height and the hi and low vals
	// this is needed to accompdate for +/- range
	level = (h * (((curval - loval) / (hival - loval))));
	// draw the bar graph
	// write a upper and lower bar to minimize flicker cause by blanking out bar and redraw on update
	Screen.fillRect(x, y - h, w, h - level, voidcolor);
	Screen.fillRect(x, y - level + 1, w, level, barcolor);
	// write the current value
	/*
	  tft.setTextColor(textcolor, backcolor);
	  tft.setTextSize(1);
	  tft.setCursor(x , y - h - 23);
	  tft.println(Format(curval, dig, dec));
	*/

} // Close function.

/*-----------------------------------------------------------------*/

void ptSessionDistanceV1(Adafruit_ST7735& Screen, double x, double y, double w, double h, double loval, double hival, double inc, double curval, int dig, int dec, unsigned int barcolor, unsigned int voidcolor, unsigned int bordercolor, unsigned int textcolor, unsigned int backcolor, String label, boolean& redraw)
{

	Screen.setFont(&FreeSans9pt7b);
	Screen.setTextSize(1);
	Screen.setTextColor(ST77XX_WHITE);
	Screen.setCursor(4, 20);
	Screen.println("Session Distances");
	Screen.setFont();

	double stepval, range;
	double my, level;
	double i, data;
	// draw the border, scale, and label once.
	// avoid doing this on every update to minimize flicker.
	if (redraw == true) {
		redraw = false;

		Screen.drawRect(x - 1, y - h - 1, w + 2, h + 2, bordercolor);
		Screen.setTextColor(textcolor, backcolor);
		Screen.setTextSize(1);
		Screen.setCursor(x + 2, y + 7);
		Screen.println(label);
		// step val basically scales the hival and low val to the height
		// deducting a small value to eliminate round off errors
		// this val may need to be adjusted.
		stepval = (inc) * (double(h) / (double(hival - loval))) - 0;
		for (i = 0; i <= h; i += stepval) {
			my = y - h + i;
			Screen.drawFastHLine(x + w + 1, my, 5, textcolor);
			// draw lables
			Screen.setTextSize(1);
			Screen.setTextColor(BLACK, backcolor);
			Screen.setCursor(x + w + 12, my - 3);
			data = hival - (i * (inc / stepval));
			Screen.println(Format(data, dig, dec));
			Screen.setFont();
		}
	}
	// compute level of bar graph that is scaled to the  height and the hi and low vals
	// this is needed to accompdate for +/- range
	level = (h * (((curval - loval) / (hival - loval))));
	// draw the bar graph
	// write a upper and lower bar to minimize flicker cause by blanking out bar and redraw on update
	Screen.fillRect(x, y - h, w, h - level, voidcolor);
	Screen.fillRect(x, y - level + 1, w, level, barcolor);
	// write the current value
	/*
	  tft.setTextColor(textcolor, backcolor);
	  tft.setTextSize(1);
	  tft.setCursor(x , y - h - 23);
	  tft.println(Format(curval, dig, dec));
	*/

}  // Close function.

/*-----------------------------------------------------------------*/

void ptSessionDistanceV2(Adafruit_ST7735& Screen, double x, double y, double w, double h, double loval, double hival, double inc, double curval, int dig, int dec, unsigned int barcolor, unsigned int voidcolor, unsigned int bordercolor, unsigned int textcolor, unsigned int backcolor, String label, boolean& redraw)
{

	double stepval, range;
	double my, level;
	double i, data;
	// draw the border, scale, and label once
	// avoid doing this on every update to minimize flicker
	if (redraw == true) {
		redraw = false;

		Screen.drawRect(x - 1, y - h - 1, w + 2, h + 2, bordercolor);
		Screen.setTextColor(textcolor, backcolor);
		Screen.setTextSize(1);
		Screen.setCursor(x + 2, y + 7);
		Screen.println(label);
		// step val basically scales the hival and low val to the height
		// deducting a small value to eliminate round off errors
		// this val may need to be adjusted
		stepval = (inc) * (double(h) / (double(hival - loval))) - 0;
		for (i = 0; i <= h; i += stepval) {
			my = y - h + i;
			Screen.drawFastHLine(x + w + 1, my, 5, textcolor);
			// draw lables
			Screen.setTextSize(1);
			Screen.setTextColor(BLACK, backcolor);
			Screen.setCursor(x + w + 12, my - 3);
			data = hival - (i * (inc / stepval));
			Screen.println(Format(data, dig, dec));
		}
	}
	// compute level of bar graph that is scaled to the  height and the hi and low vals
	// this is needed to accompdate for +/- range
	level = (h * (((curval - loval) / (hival - loval))));
	// draw the bar graph
	// write a upper and lower bar to minimize flicker cause by blanking out bar and redraw on update
	Screen.fillRect(x, y - h, w, h - level, voidcolor);
	Screen.fillRect(x, y - level + 1, w, level, barcolor);
	// write the current value
	/*
	  tft.setTextColor(textcolor, backcolor);
	  tft.setTextSize(1);
	  tft.setCursor(x , y - h - 23);
	  tft.println(Format(curval, dig, dec));
	*/

} // Close function.

/*-----------------------------------------------------------------*/

void ptSessionDistanceV3(Adafruit_ST7735& Screen, double x, double y, double w, double h, double loval, double hival, double inc, double curval, int dig, int dec, unsigned int barcolor, unsigned int voidcolor, unsigned int bordercolor, unsigned int textcolor, unsigned int backcolor, String label, boolean& redraw)
{

	double stepval, range;
	double my, level;
	double i, data;
	// draw the border, scale, and label once
	// avoid doing this on every update to minimize flicker
	if (redraw == true) {
		redraw = false;

		Screen.drawRect(x - 1, y - h - 1, w + 2, h + 2, bordercolor);
		Screen.setTextColor(textcolor, backcolor);
		Screen.setTextSize(1);
		Screen.setCursor(x + 2, y + 7);
		Screen.println(label);
		// step val basically scales the hival and low val to the height
		// deducting a small value to eliminate round off errors
		// this val may need to be adjusted
		stepval = (inc) * (double(h) / (double(hival - loval))) - 0;
		for (i = 0; i <= h; i += stepval) {
			my = y - h + i;
			Screen.drawFastHLine(x + w + 1, my, 5, textcolor);
			// draw lables
			Screen.setTextSize(1);
			Screen.setTextColor(textcolor, backcolor);
			Screen.setCursor(x + w + 7, my - 3);
			data = hival - (i * (inc / stepval));
			Screen.println(Format(data, dig, dec));
		}
	}
	// compute level of bar graph that is scaled to the  height and the hi and low vals
	// this is needed to accompdate for +/- range
	level = (h * (((curval - loval) / (hival - loval))));
	// draw the bar graph
	// write a upper and lower bar to minimize flicker cause by blanking out bar and redraw on update
	Screen.fillRect(x, y - h, w, h - level, voidcolor);
	Screen.fillRect(x, y - level + 1, w, level, barcolor);
	// write the current value
	/*
	  tft.setTextColor(textcolor, backcolor);
	  tft.setTextSize(1);
	  tft.setCursor(x , y - h - 23);
	  tft.println(Format(curval, dig, dec));
	*/

} // Close function.

/*-----------------------------------------------------------------*/

String Format(double val, int dec, int dig) {
	int addpad = 0;
	char sbuf[20];
	String condata = (dtostrf(val, dec, dig, sbuf));


	int slen = condata.length();
	for (addpad = 1; addpad <= dec + dig - slen; addpad++) {
		condata = " " + condata;
	}
	return (condata);

} // Close function.

/*-----------------------------------------------------------------*/

void averageSpeed() {

	// Subtract the last reading.

	total = total - readings[readIndex];

	// Get latest Kph.

	readings[readIndex] = speedKph;

	// Add the reading to the total.

	total = total + readings[readIndex];

	// Advance to the next position in the average array.

	readIndex = readIndex + 1;

	// If we're at the end of the array.

	if (readIndex >= numReadings) {

		readIndex = 0;

	} // Close if.

}  // Close function.

/*-----------------------------------------------------------------*/

void lcdBackLight() {

	if (displayBackLight == 0) {

		digitalWrite(lcdBackLightPin, LOW);

	} // Close if.

	else digitalWrite(lcdBackLightPin, HIGH);

} // Close function.

/*-----------------------------------------------------------------*/

ICACHE_RAM_ATTR void screenMenuISR() {

	static unsigned long  last_interrupt_time = 0;                  // Function to solve debounce
	unsigned long         interrupt_time = millis();

	if (interrupt_time - last_interrupt_time > 800)
	{

		detachInterrupt(interruptMenuButton);

		if (screenMenu == 0) {

			screenMenu = 1;
			dial_1 = true;
			screenRedraw = 1;

		}  // Close if.

		else if (screenMenu == 1) {

			screenMenu = 2;
			screenRedraw = 1;
			configurationFlag = 0;

		}  // Close else

		else if (screenMenu == 2) {

			screenMenu = 3;
			graph_1 = true;
			graph_2 = true;
			graph_3 = true;
			graph_4 = true;
			graph_5 = true;
			graph_6 = true;
			graph_7 = true;
			screenRedraw = 1;

		}  // Close else

		else if (screenMenu == 3) {

			screenMenu = 4;
			graph_8 = true;
			graph_9 = true;
			graph_10 = true;
			graph_11 = true;
			graph_12 = true;
			graph_13 = true;
			graph_14 = true;
			screenRedraw = 1;

		}  // Close else

		else if (screenMenu == 4) {

			screenMenu = 0;
			screenRedraw = 1;

		}  // Close else

	} // Close if.

	attachInterrupt(digitalPinToInterrupt(interruptMenuButton), screenMenuISR, FALLING);
	last_interrupt_time = interrupt_time;

} // Close function.

/*-----------------------------------------------------------------*/

ICACHE_RAM_ATTR void wakeInterruptISR() {

	static unsigned long  last_interrupt_time = 0;                  // Function to solve debounce
	unsigned long         interrupt_time = millis();

	if (interrupt_time - last_interrupt_time > 50)
	{
		if (wakeInterrupt == 1) {

			wakeInterrupt = 0;
			displayBackLight = 0;

		}  // Close if.

		else (
			wakeInterrupt = 1,
			displayBackLight = 1

			); // Close else.

	} // Close if.

	last_interrupt_time = interrupt_time;

} // Close function.

/*-----------------------------------------------------------------*/

ICACHE_RAM_ATTR void rotationInterruptISR() {

	static unsigned long  last_interrupt_time = 0;                  // Function to solve debounce
	unsigned long         interrupt_time = millis();

	if (interrupt_time - last_interrupt_time > 100) {

		detachInterrupt(interruptWheelSensor);

		passedTime = millis() - startTime;
		startTime = millis();

		rpm = (60000 * circumference) / passedTime;			// Revs per minute.
		speedKph = (3600 * circumference) / passedTime;		// km/h.
		speedMph = (3600 * circImperial) / passedTime;		// Miles per hour.

		distanceCounter++;
		eeTotalDistanceChange = true;
		distanceTravelled = distanceCounter * circumference;

		if (sessionTimeFlag == 0) {		// Set session timer to start.

			sessionTimeFlag = 1;
			sessionStartTime = millis();
			sessionStartDistance = distanceTravelled;
			recordSessions = 0;

		} // Close if.

		lastRotation1 = millis();
		lastRotation2 = lastRotation1 + 4000;

		attachInterrupt(digitalPinToInterrupt(interruptWheelSensor), rotationInterruptISR, FALLING);

	} // Close if.

	last_interrupt_time = interrupt_time;

}  // Close function.

/*-----------------------------------------------------------------*/

void lightSleep() {

	if (wakeInterrupt == 0) {

		wifi_station_disconnect();
		wifi_set_opmode_current(NULL_MODE);
		wifi_fpm_set_sleep_type(LIGHT_SLEEP_T);
		wifi_fpm_open(); // Enables force sleep
		wifi_fpm_do_sleep(FPM_SLEEP_MAX_TIME); // Sleep for longest possible time
		delay(200);

	} // Close if.

	else {} // Do nothing

} // Close function.

/*-----------------------------------------------------------------*/

void drawBatteryBitmap(int x, int y, const uint16_t* bitmap, int bw, int bh) {

	//int h = 64, w = 64, row, col, buffidx = 0;
	int buffidx = 0;
	int row;
	int col;
	int w = bw + y;
	int h = bh + x;

	for (row = x; row < h; row++) { // For each scanline...
		for (col = y; col < w; col++) { // For each pixel...
		  //To read from Flash Memory, pgm_read_XXX is required.
		  //Since image is stored as uint16_t, pgm_read_word is used as it uses 16bit address
			tft.drawPixel(col, row, pgm_read_word(bitmap + buffidx));
			buffidx++;
		} // end pixel
	}
	
} // Close function.
	
/*-----------------------------------------------------------------*/

void resetSystemData() {

	eeMenuSetting = 0;
	EEPROM.put(eeMenuAddress, eeMenuSetting);
	EEPROM.commit();

	eeCircSetting = 1.00;
	EEPROM.put(eeCircAddress, eeCircSetting);
	EEPROM.commit();

	eeTotalDistance = 0.00;
	EEPROM.put(eeTotalDistanceAddress, eeTotalDistance);
	EEPROM.commit();

	eeSessionArrayPosition = 0;
	EEPROM.put(eeSessionArrayPositionAddress, eeSessionArrayPosition);

	EEPROM.put(eeSessionTimeArray1Address, 0);									// Populate arrays with zero data.
	EEPROM.put(eeSessionTimeArray2Address, 0);
	EEPROM.put(eeSessionTimeArray3Address, 0);
	EEPROM.put(eeSessionTimeArray4Address, 0);
	EEPROM.put(eeSessionTimeArray5Address, 0);
	EEPROM.put(eeSessionTimeArray6Address, 0);
	EEPROM.put(eeSessionTimeArray7Address, 0);
	EEPROM.commit();

	EEPROM.put(eeSessionDistanceArray1Address, 0);
	EEPROM.put(eeSessionDistanceArray2Address, 0);
	EEPROM.put(eeSessionDistanceArray3Address, 0);
	EEPROM.put(eeSessionDistanceArray4Address, 0);
	EEPROM.put(eeSessionDistanceArray5Address, 0);
	EEPROM.put(eeSessionDistanceArray6Address, 0);
	EEPROM.put(eeSessionDistanceArray7Address, 0);
	EEPROM.commit();

	eeResetSetting = 0;
	EEPROM.put(eeResetSettingAddress, 0);
	EEPROM.commit();

	EEPROM.get(eeMenuAddress, eeMenuSetting);
	EEPROM.get(eeCircAddress, eeCircSetting);
	EEPROM.get(eeMenuAddress, screenMenu);
	EEPROM.get(eeCircAddress, circumference);
	EEPROM.get(eeTotalDistanceAddress, distanceCounter);

	EEPROM.commit();

	EEPROM.get(eeSessionTimeArray1Address, sessionTimeArray[0]);
	EEPROM.get(eeSessionTimeArray2Address, sessionTimeArray[1]);
	EEPROM.get(eeSessionTimeArray3Address, sessionTimeArray[2]);
	EEPROM.get(eeSessionTimeArray4Address, sessionTimeArray[3]);
	EEPROM.get(eeSessionTimeArray5Address, sessionTimeArray[4]);
	EEPROM.get(eeSessionTimeArray6Address, sessionTimeArray[5]);
	EEPROM.get(eeSessionTimeArray7Address, sessionTimeArray[6]);

	EEPROM.commit();

	sessionTimeArray1 = sessionTimeArray[0] / 1000 / 60;							// Times to be updated, needs to be divided by 1000.
	sessionTimeArray2 = sessionTimeArray[1] / 1000 / 60;
	sessionTimeArray3 = sessionTimeArray[2] / 1000 / 60;
	sessionTimeArray4 = sessionTimeArray[3] / 1000 / 60;
	sessionTimeArray5 = sessionTimeArray[4] / 1000 / 60;
	sessionTimeArray6 = sessionTimeArray[5] / 1000 / 60;
	sessionTimeArray7 = sessionTimeArray[6] / 1000 / 60;

	EEPROM.get(eeSessionDistanceArray1Address, distanceTravelledArray[0]);
	EEPROM.get(eeSessionDistanceArray2Address, distanceTravelledArray[1]);
	EEPROM.get(eeSessionDistanceArray3Address, distanceTravelledArray[2]);
	EEPROM.get(eeSessionDistanceArray4Address, distanceTravelledArray[3]);
	EEPROM.get(eeSessionDistanceArray5Address, distanceTravelledArray[4]);
	EEPROM.get(eeSessionDistanceArray6Address, distanceTravelledArray[5]);
	EEPROM.get(eeSessionDistanceArray7Address, distanceTravelledArray[6]);

	EEPROM.commit();

	distanceTravelledArray1 = distanceTravelledArray[0];
	distanceTravelledArray2 = distanceTravelledArray[1];
	distanceTravelledArray3 = distanceTravelledArray[2];
	distanceTravelledArray4 = distanceTravelledArray[3];
	distanceTravelledArray5 = distanceTravelledArray[4];
	distanceTravelledArray6 = distanceTravelledArray[5];
	distanceTravelledArray7 = distanceTravelledArray[6];

} // Close function.

/*-----------------------------------------------------------------*/

void resetSystemDemoData() {

	eeMenuSetting = 0;
	EEPROM.put(eeMenuAddress, eeMenuSetting);
	EEPROM.commit();

	eeCircSetting = 0.75;
	EEPROM.put(eeCircAddress, eeCircSetting);
	EEPROM.commit();

	eeTotalDistance = 5000.00;
	EEPROM.put(eeTotalDistanceAddress, eeTotalDistance);
	EEPROM.commit();

	eeSessionArrayPosition = 0;
	EEPROM.put(eeSessionArrayPositionAddress, eeSessionArrayPosition);
	
	EEPROM.put(eeSessionTimeArray1Address, 240000);									// Populate arrays with demo data.
	EEPROM.put(eeSessionTimeArray2Address, 300000);
	EEPROM.put(eeSessionTimeArray3Address, 360000);
	EEPROM.put(eeSessionTimeArray4Address, 420000);
	EEPROM.put(eeSessionTimeArray5Address, 480000);
	EEPROM.put(eeSessionTimeArray6Address, 540000);
	EEPROM.put(eeSessionTimeArray7Address, 660000);
	EEPROM.commit();

	EEPROM.put(eeSessionDistanceArray1Address, 8);
	EEPROM.put(eeSessionDistanceArray2Address, 10);
	EEPROM.put(eeSessionDistanceArray3Address, 12);
	EEPROM.put(eeSessionDistanceArray4Address, 14);
	EEPROM.put(eeSessionDistanceArray5Address, 16);
	EEPROM.put(eeSessionDistanceArray6Address, 18);
	EEPROM.put(eeSessionDistanceArray7Address, 20);
	EEPROM.commit();

	eeResetSetting = 0;
	EEPROM.put(eeResetSettingAddress, 0);
	EEPROM.commit();

	EEPROM.get(eeMenuAddress, eeMenuSetting);
	EEPROM.get(eeCircAddress, eeCircSetting);
	EEPROM.get(eeMenuAddress, screenMenu);
	EEPROM.get(eeCircAddress, circumference);
	EEPROM.get(eeTotalDistanceAddress, distanceCounter);

	EEPROM.commit();

	EEPROM.get(eeSessionTimeArray1Address, sessionTimeArray[0]);
	EEPROM.get(eeSessionTimeArray2Address, sessionTimeArray[1]);
	EEPROM.get(eeSessionTimeArray3Address, sessionTimeArray[2]);
	EEPROM.get(eeSessionTimeArray4Address, sessionTimeArray[3]);
	EEPROM.get(eeSessionTimeArray5Address, sessionTimeArray[4]);
	EEPROM.get(eeSessionTimeArray6Address, sessionTimeArray[5]);
	EEPROM.get(eeSessionTimeArray7Address, sessionTimeArray[6]);

	EEPROM.commit();

	sessionTimeArray1 = sessionTimeArray[0] / 100 / 60;							// Times to be updated, needs to be divided by 1000.
	sessionTimeArray2 = sessionTimeArray[1] / 100 / 60;
	sessionTimeArray3 = sessionTimeArray[2] / 100 / 60;
	sessionTimeArray4 = sessionTimeArray[3] / 100 / 60;
	sessionTimeArray5 = sessionTimeArray[4] / 100 / 60;
	sessionTimeArray6 = sessionTimeArray[5] / 100 / 60;
	sessionTimeArray7 = sessionTimeArray[6] / 100 / 60;

	EEPROM.get(eeSessionDistanceArray1Address, distanceTravelledArray[0]);
	EEPROM.get(eeSessionDistanceArray2Address, distanceTravelledArray[1]);
	EEPROM.get(eeSessionDistanceArray3Address, distanceTravelledArray[2]);
	EEPROM.get(eeSessionDistanceArray4Address, distanceTravelledArray[3]);
	EEPROM.get(eeSessionDistanceArray5Address, distanceTravelledArray[4]);
	EEPROM.get(eeSessionDistanceArray6Address, distanceTravelledArray[5]);
	EEPROM.get(eeSessionDistanceArray7Address, distanceTravelledArray[6]);

	EEPROM.commit();

	distanceTravelledArray1 = distanceTravelledArray[0];
	distanceTravelledArray2 = distanceTravelledArray[1];
	distanceTravelledArray3 = distanceTravelledArray[2];
	distanceTravelledArray4 = distanceTravelledArray[3];
	distanceTravelledArray5 = distanceTravelledArray[4];
	distanceTravelledArray6 = distanceTravelledArray[5];
	distanceTravelledArray7 = distanceTravelledArray[6];

} // Close function.

/*-----------------------------------------------------------------*/

PetBit Start Screen Image

Arduino
This is the hex code for the boot up image
#pragma once

#define startScreen_h

const uint16_t startScreen [] PROGMEM = { 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0820, 0x0000, 0x0000, 0x0820, 0x72c4, 0x72a4, 0x20e1, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0840, 0x1060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x20e1, 0x72a4, 0x72c4, 0x0820, 0x0000, 0x0000, 0x0820, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x4124, 0xf3d0, 0xfc10, 0xe38f, 0x69a7, 0x0000, 0x0020, 0xa3c6, 0xed69, 0x6a64, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1060, 0x41a2, 0x72a4, 0x9ba6, 0xbca7, 0xe5a9, 0xfe4a, 0xfe4a, 0xf5e9, 0xd528, 0xb467, 0x93a5, 0x5a23, 0x0820, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a64, 0xed69, 0xa3c6, 0x0020, 0x0000, 0x69a7, 0xe38f, 0xfc10, 0xf3d0, 0x4124, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x4104, 0xf3f0, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xa2ab, 0x0000, 0x0020, 0xc487, 0xed69, 0x8b45, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18a1, 0x8325, 0xeda9, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xf5e9, 0x9bc6, 0x3962, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8325, 0xed69, 0xc487, 0x0020, 0x0000, 0xa28a, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xf3f0, 0x4104, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0xdb6e, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0x9249, 0x0000, 0x4182, 0xed69, 0xe549, 0x3942, 0x0000, 0x0000, 0x28e1, 0x9366, 0xe569, 0xf5e9, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xd528, 0x3982, 0x0000, 0x0000, 0x3962, 0xe549, 0xed69, 0x4182, 0x0000, 0x8a49, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xdb6e, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x6186, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfbf0, 0x28a2, 0x0000, 0x9365, 0x3122, 0x0000, 0x0840, 0x9ba6, 0xed69, 0xed69, 0xf5c9, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe29, 0x8b85, 0x0820, 0x0000, 0x3142, 0x9b86, 0x0000, 0x28a2, 0xfbf0, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0x6186, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0xaaab, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xaaab, 0x0000, 0x0000, 0x0000, 0x1881, 0xc487, 0xed69, 0xed69, 0xf5c9, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xdd48, 0x3962, 0x0000, 0x0000, 0x0000, 0xaaab, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xaaab, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0xd34d, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xe3af, 0x0000, 0x0000, 0x20c1, 0xccc8, 0xed69, 0xed69, 0xed89, 0xfe2a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe09, 0x41a2, 0x0000, 0x0000, 0xe3af, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xd34d, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0xfbf0, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfbf0, 0x4104, 0x0000, 0x3122, 0xdd08, 0xed69, 0xed69, 0xed69, 0xfe09, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xf5e9, 0x3142, 0x0000, 0x38e4, 0xfbf0, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfbf0, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0000, 0x1041, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0x79e8, 0x0000, 0x3142, 0xe549, 0xed69, 0xed69, 0xed69, 0xf5c9, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xedc9, 0x2901, 0x0000, 0x79e8, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0x1041, 0x0000, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0xebaf, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xbaec, 0x0000, 0x0000, 0xc487, 0xed69, 0xed69, 0xed69, 0xed89, 0xfe2a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xe5a9, 0x4182, 0x9269, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xebaf, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0xbaec, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfbf0, 0x28c3, 0x0000, 0x6a64, 0xed69, 0xed69, 0xed69, 0xed69, 0xf5c9, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfd2d, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xbaec, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x8a29, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xa2ab, 0x0000, 0x1080, 0xdd28, 0xed69, 0xed69, 0xed69, 0xed69, 0xfe09, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe2a, 0xa2ea, 0xcb2d, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0x8a29, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x30e3, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0xfbf0, 0x2082, 0x0000, 0x9b86, 0xed69, 0xed69, 0xed69, 0xed69, 0xed89, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe29, 0x0000, 0x1861, 0xfbf0, 0xfc10, 0xfc10, 0xfc10, 0xfc10, 0x30e3, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0xb2cc, 0xfc10, 0xfc10, 0xfc10, 0x9a6a, 0x0000, 0x3942, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xf5e9, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x5203, 0x0000, 0x9a6a, 0xfc10, 0xfc10, 0xfc10, 0xb2cc, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x30c3, 0xfbf0, 0xfc10, 0xfbf0, 0x2082, 0x0000, 0xbc47, 0xed69, 0xed69, 0xed69, 0xed69, 0xed89, 0xfe2a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xd528, 0x0000, 0x2082, 0xfbf0, 0xfc10, 0xfbf0, 0x30c3, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x69a6, 0xfc10, 0x9a6a, 0x0000, 0x49c3, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xf5a9, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x5a23, 0x0000, 0x9a6a, 0xfc10, 0x69a6, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x79e8, 0x2082, 0x0000, 0xc4a8, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xfe09, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xdd68, 0x0000, 0x2082, 0x79e8, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a23, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed89, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x6284, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0020, 0xd4e8, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xf5c9, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xe589, 0x0820, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x6a84, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xfe29, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x72e4, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x28e1, 0xe549, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xf5c9, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe09, 0x2901, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0020, 0xc487, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed89, 0xfe29, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xd528, 0x0020, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x8325, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xf5c9, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x9385, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x4182, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed89, 0xfe2a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x49c3, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x1060, 0xd4e8, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xf5e9, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xeda9, 0x1060, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x8b45, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed89, 0xfe2a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe2a, 0x9ba6, 0x4182, 0x20e1, 0xcd08, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x9bc6, 0x41a2, 0x20c1, 0xc4c7, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x9bc6, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff,
0xffff, 0xffff, 0x0000, 0x0000, 0x3142, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xf5e9, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe2a, 0x5203, 0x0000, 0x0000, 0x0841, 0x5229, 0xac4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x5a23, 0x0000, 0x0000, 0x0020, 0x4a08, 0xac4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe2a, 0x3962, 0x0000, 0x0000, 0xffff, 0xffff,
0xffff, 0x0000, 0x0000, 0x0000, 0xc467, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed89, 0xfe2a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x93a5, 0x0000, 0x0841, 0x6b2d, 0xef5d, 0xa4f4, 0x524a, 0x18c1, 0xac26, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe8e, 0xfed1, 0xfe8e, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xa3e6, 0x0000, 0x0841, 0x62cc, 0xe73d, 0xad35, 0x526b, 0x18c2, 0xa406, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xd508, 0x0000, 0x0000, 0x0000, 0xffff,
0xffff, 0x0000, 0x0000, 0x3942, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xf5e9, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x3962, 0x0000, 0x3146, 0xf79e, 0xffff, 0xef5d, 0x4a2a, 0x0000, 0x49c2, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4b, 0xff37, 0xff59, 0xff59, 0xff59, 0xfed2, 0xfe4a, 0xfe4a, 0xfe4a, 0x41c2, 0x0000, 0x2946, 0xe73c, 0xffff, 0xf79e, 0x524a, 0x0000, 0x41a2, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x3982, 0x0000, 0x0000, 0xffff,
0xffff, 0x0000, 0x0000, 0x9b86, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xfe29, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x0840, 0x0020, 0x49e9, 0xa4d4, 0xef7d, 0xa4f4, 0x5a8c, 0x0000, 0x1080, 0xfe4a, 0xfe4a, 0xfe4a, 0xfef2, 0xff59, 0xff59, 0xff59, 0xff59, 0xff58, 0xfe4b, 0xfe4a, 0xfe4a, 0x1080, 0x0000, 0x49e9, 0x9493, 0xef7d, 0xad35, 0x5a8c, 0x0020, 0x0860, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xa406, 0x0000, 0x0000, 0xffff,
0x0000, 0x0000, 0x1060, 0xe549, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed89, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x0020, 0x0020, 0x49e9, 0x4a09, 0x5a8c, 0x5a8c, 0x5a8c, 0x0020, 0x0860, 0xfe4a, 0xfe4a, 0xfe4a, 0xff58, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xfe8e, 0xfe4a, 0xfe4a, 0x0860, 0x0020, 0x49e9, 0x49e9, 0x5a8c, 0x5a8c, 0x5a8c, 0x0821, 0x0020, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe09, 0x1080, 0x0000, 0x0000,
0x0000, 0x0000, 0x49c3, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xf5c9, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x0840, 0x0020, 0x49e9, 0x49e9, 0x5a6b, 0x5a8c, 0x5a8b, 0x0000, 0x1080, 0xfe4a, 0xfe4a, 0xfe8e, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xfe8e, 0xfe4a, 0xfe4a, 0x1080, 0x0000, 0x49e9, 0x49e9, 0x5a6b, 0x5a8c, 0x5a8b, 0x0020, 0x0840, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x5203, 0x0000, 0x0000,
0x0000, 0x0000, 0x82e5, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xfe09, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x3962, 0x0000, 0x3146, 0x49e9, 0x522a, 0x5a6b, 0x3987, 0x0000, 0x41a2, 0xfe4a, 0xfe4a, 0xff14, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xfeb0, 0xfe4a, 0xfe4a, 0x41a2, 0x0000, 0x2946, 0x49e9, 0x4a2a, 0x5a6b, 0x39a7, 0x0000, 0x3962, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x8b65, 0x0000, 0x0000,
0x0000, 0x0000, 0xb427, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xfe29, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x9385, 0x0000, 0x0841, 0x3146, 0x41e9, 0x3146, 0x0841, 0x0000, 0x9be6, 0xfe4a, 0xfe4b, 0xff58, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xfed2, 0xfe4a, 0xfe4a, 0x9be6, 0x0000, 0x0841, 0x3146, 0x41e9, 0x3146, 0x0841, 0x0000, 0x9385, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xc4a7, 0x0000, 0x0000,
0x0000, 0x0000, 0xdd28, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xfe2a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe29, 0x49c2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5203, 0xfe4a, 0xfe4a, 0xfed1, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff14, 0xfe4a, 0xfe4a, 0xfe4a, 0x5203, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x49c2, 0xfe29, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xf5e9, 0x0000, 0x0000,
0x0000, 0x0000, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed89, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe2a, 0x93a5, 0x4182, 0x18a1, 0x41a2, 0x9bc6, 0xfe2a, 0xfe4a, 0xfeaf, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff58, 0xfe6d, 0xfe4a, 0xfe4a, 0xfe2a, 0x9bc6, 0x41a2, 0x18a1, 0x4182, 0x93a5, 0xfe2a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x0000, 0x0000,
0x0000, 0x0820, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed89, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe8d, 0xff58, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff36, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x0820, 0x0000,
0x0000, 0x1060, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed89, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe8e, 0xfef4, 0xff58, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff14, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0x1060, 0x0000,
0x0000, 0x0840, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed89, 0xfe4a, 0xfe4a, 0xfe8e, 0xfeb0, 0xfed1, 0xfed1, 0xfed2, 0xfed2, 0xfef2, 0xfef2, 0xfef2, 0xfef3, 0xff58, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff37, 0xfeb0, 0xfe4b, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe6b, 0xfe8e, 0xfeb0, 0xfef2, 0xff14, 0xfef3, 0xfed1, 0xfeaf, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe2a, 0x0840, 0x0000,
0x0000, 0x0000, 0xcca8, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xedab, 0xfef2, 0xff57, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff37, 0xff36, 0xff36, 0xff58, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff58, 0xfef2, 0xfe4b, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xdd68, 0x0000, 0x0000,
0x0000, 0x0000, 0x9ba6, 0xed69, 0xed69, 0xed69, 0xed69, 0xed69, 0xeded, 0xf6f6, 0xff58, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xd634, 0x734b, 0x4a27, 0x2924, 0x2924, 0x4a27, 0x734b, 0xd634, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff57, 0xfe8d, 0xfe4a, 0xfe4a, 0xfe4a, 0xfe4a, 0xac26, 0x0000, 0x0000,
0x0000, 0x0000, 0x72a4, 0xed69, 0xed69, 0xed69, 0xed69, 0xedcc, 0xf6f6, 0xf6f6, 0xff38, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xe6d7, 0x5268, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5268, 0xe6d7, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff58, 0xfe8d, 0xfe4a, 0xfe4a, 0xfe4a, 0x7b04, 0x0000, 0x0000,
0x0000, 0x0000, 0x41a2, 0xed69, 0xed69, 0xe569, 0xc487, 0xa48e, 0x7b6b, 0x62c9, 0x5288, 0x4a27, 0x39a5, 0x2944, 0x20e3, 0x2103, 0x2944, 0x2964, 0x3185, 0x39a5, 0x4a27, 0xde76, 0xff59, 0xff59, 0xff59, 0xeef7, 0x3185, 0x0000, 0x2082, 0x8a6a, 0xd3f0, 0xf493, 0xf493, 0xd3f0, 0x92ab, 0x20a2, 0x0000, 0x3185, 0xeef7, 0xff59, 0xff59, 0xff59, 0xde76, 0x4a27, 0x39a5, 0x3185, 0x2964, 0x2944, 0x2103, 0x20e3, 0x2944, 0x39a5, 0x4a27, 0x5a88, 0x6b0a, 0x7bac, 0xa4f0, 0xd613, 0xfe2a, 0xfe4a, 0xfe4a, 0x49e3, 0x0000, 0x0000,
0x0000, 0x0000, 0x1060, 0x49c3, 0x20e1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbd92, 0xff59, 0xff59, 0xff59, 0x7b8c, 0x0000, 0x4925, 0xf3d0, 0xfcb3, 0xfcb4, 0xfcb4, 0xfcb4, 0xfcb4, 0xfcb4, 0xf493, 0x4966, 0x0000, 0x7b8c, 0xff59, 0xff59, 0xff59, 0xbd92, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x2901, 0x5203, 0x1060, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1881, 0x41c5, 0x6ae9, 0x940d, 0xacf0, 0xbd51, 0xce14, 0xde76, 0xeef7, 0xff58, 0xf738, 0xf718, 0xeef7, 0xe6d7, 0xe696, 0xeed7, 0xff59, 0xff59, 0xff59, 0xff59, 0x3185, 0x0000, 0xe38e, 0xfc10, 0xfc93, 0xfcb4, 0xfcb4, 0xfcb4, 0xfcb4, 0xfcb4, 0xfcb4, 0xe431, 0x0000, 0x3185, 0xff59, 0xff59, 0xff59, 0xff59, 0xeed7, 0xe696, 0xe6d7, 0xeef7, 0xf718, 0xf738, 0xff58, 0xeef7, 0xde76, 0xce14, 0xc5b3, 0xb531, 0x944e, 0x6b2a, 0x41e6, 0x18a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x3122, 0xdd28, 0xed69, 0xf6f6, 0xf6f6, 0xf6f6, 0xf6f6, 0xf6f6, 0xff38, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0x2944, 0x0000, 0xe38f, 0xfc10, 0xfc52, 0xfcb4, 0xfcb4, 0xfcb4, 0xfcb4, 0xfcb4, 0xfcb4, 0xe432, 0x0000, 0x2944, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff58, 0xf5ea, 0x3962, 0x0000, 0x0000, 0x0000,
0xffff, 0x0000, 0x0000, 0x0000, 0xb447, 0xed69, 0xf6f6, 0xf6f6, 0xf6f6, 0xf6f6, 0xf6f6, 0xf717, 0xff59, 0xf738, 0xc5b3, 0x83cc, 0x5ac9, 0x41e6, 0x2103, 0x6b2b, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0x736b, 0x0000, 0x4925, 0xf3f0, 0xfc10, 0xfc93, 0xfcb4, 0xfcb4, 0xfcb4, 0xfcb4, 0xf493, 0x4965, 0x0000, 0x736b, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0x6b2b, 0x2103, 0x41e6, 0x5ac9, 0x83cc, 0xc5b3, 0xf738, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xc4e8, 0x0000, 0x0000, 0x0000, 0xffff,
0xffff, 0xffff, 0x0000, 0x0000, 0x3142, 0xed69, 0xf6f6, 0xf6f6, 0xf6f6, 0xf6f6, 0xd613, 0x940d, 0x4a47, 0x0861, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5aa9, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xeef7, 0x3164, 0x0000, 0x2082, 0xa28a, 0xfbf0, 0xfc52, 0xfcb3, 0xfcb3, 0xa2ec, 0x2082, 0x0000, 0x3164, 0xeef7, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0x5aa9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0861, 0x4a48, 0x946e, 0xde75, 0xff59, 0xff59, 0xff59, 0xff59, 0xff58, 0x3962, 0x0000, 0x0000, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0xa3a6, 0xf6f6, 0xf6f6, 0xb4f0, 0x2103, 0x0000, 0x0000, 0x0000, 0x0841, 0x4a27, 0x8c2e, 0xbd72, 0xd655, 0xf738, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xe6d7, 0x62e9, 0x0000, 0x0000, 0x28a2, 0x71c7, 0x71c7, 0x28a3, 0x0000, 0x0000, 0x62e9, 0xe6d7, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xf738, 0xd655, 0xb572, 0x8c2e, 0x4a27, 0x0841, 0x0000, 0x0000, 0x0000, 0x2103, 0xb552, 0xff59, 0xff59, 0xacef, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x1060, 0xd5d1, 0xf6f6, 0x8bec, 0x0000, 0x3164, 0x734a, 0xbd31, 0xf717, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xce14, 0x4206, 0x0000, 0x0000, 0x0000, 0x0000, 0x4206, 0xce14, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xf738, 0xbd92, 0x7b8c, 0x3185, 0x0000, 0x8c2e, 0xff59, 0xd655, 0x1061, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x20e2, 0xe675, 0xf6f6, 0xeeb5, 0xf6f6, 0xf6f6, 0xf6f6, 0xf6f6, 0xff58, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xe6b6, 0xacf1, 0xacf1, 0xe6b6, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xf738, 0xff59, 0xeef7, 0x2123, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x41e6, 0xf6d6, 0xf6f6, 0xf6f6, 0xf6f6, 0xf6f6, 0xf6f6, 0xf717, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0x630a, 0x5aa9, 0xeef7, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xeef7, 0x5aa9, 0x630a, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xf738, 0x4207, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x39c5, 0xe675, 0xf6f6, 0xf6f6, 0xf6f6, 0xf6f6, 0xf6f6, 0xff38, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0x4207, 0x0000, 0x2944, 0xbd92, 0xf718, 0xf738, 0xbd92, 0x7b8c, 0x3165, 0x3165, 0x7b8c, 0xbd92, 0xf738, 0xf718, 0xbd92, 0x2944, 0x0000, 0x4207, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xeef7, 0x41e6, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x2103, 0xd613, 0xf6f6, 0xf6f6, 0xf6f6, 0xf6f6, 0xf6f6, 0xff38, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xf738, 0x5a88, 0x0000, 0x0000, 0x0020, 0x0841, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0841, 0x0020, 0x0000, 0x0000, 0x5a88, 0xf738, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xde75, 0x2123, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x1081, 0x9c6e, 0xf6d6, 0xf6f6, 0xf6f6, 0xf6f6, 0xf6f6, 0xff38, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xa4d0, 0x62c9, 0x2103, 0x18c2, 0x5ac9, 0xa4b0, 0xd634, 0xd634, 0xa4b0, 0x5ac9, 0x18c2, 0x2103, 0x62c9, 0xa4d0, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff58, 0x9caf, 0x1082, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x3185, 0xc592, 0xf6f6, 0xf6f6, 0xf6f6, 0xf6f6, 0xff38, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xcdf4, 0x39a5, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a06, 0xa4af, 0xeeb5, 0xf6f6, 0xf6f6, 0xf717, 0xff58, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xf738, 0xacf0, 0x4a27, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0861, 0x5aa8, 0x940d, 0xbd31, 0xe675, 0xff38, 0xff59, 0xff59, 0xff59, 0xff59, 0xf718, 0xe6d7, 0xde75, 0xd614, 0xc5d3, 0xbd72, 0xbd72, 0xc5d3, 0xd614, 0xde75, 0xe6d7, 0xf718, 0xff59, 0xff59, 0xff59, 0xff59, 0xff59, 0xe6d7, 0xbd93, 0x944e, 0x62c9, 0x1061, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0841, 0x0841, 0x0841, 0x0840, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0840, 0x0841, 0x0861, 0x0861, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff };

PetBit Battery Images

Arduino
This is the hex code for the battery % images which are on the configuration screen
#pragma once

#define batteryIcons_h

const uint16_t ccBatt100[] PROGMEM = {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0841, 0xa534, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xc618, 0x630c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0x6b4d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xdefb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xce59, 0xffff, 0x5b0b, 0x39c7, 0x39a7, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x39c7, 0x5acb, 0xffff, 0xce59, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0xc618, 0xffff, 0x2104, 0x0000, 0x0901, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x0901, 0x0000, 0x18a3, 0xffff, 0xf79e, 0x3186, 0x0000, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0xc638, 0xffff, 0x2925, 0x1182, 0x5e4b, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55aa, 0x5e4b, 0x11e3, 0x20c4, 0xffff, 0xffff, 0xd6ba, 0xbdf7, 0x94b2, 0x0000, 0x0000,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55ca, 0x4d49, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d49, 0x55ca, 0x11a2, 0x20c4, 0xffff, 0xffff, 0xffff, 0xffff, 0xd69a, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55eb, 0x4d69, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d49, 0x55eb, 0x11c2, 0x20c4, 0xffff, 0xffff, 0xffdf, 0xffff, 0xc618, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55eb, 0x4d69, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d49, 0x55eb, 0x11c2, 0x20c4, 0xffff, 0xffff, 0xffff, 0xffff, 0xc638, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55eb, 0x4d69, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d49, 0x55eb, 0x11c2, 0x20c4, 0xffff, 0xffff, 0xffff, 0xffff, 0xc638, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55eb, 0x4d69, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d49, 0x55eb, 0x11c2, 0x20c4, 0xffff, 0xffff, 0xffdf, 0xffff, 0xc618, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55ca, 0x4d49, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d49, 0x55ca, 0x11a2, 0x20c4, 0xffff, 0xffff, 0xffff, 0xffff, 0xd69a, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2925, 0x1182, 0x5e4b, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55aa, 0x5e4b, 0x11e3, 0x20c4, 0xffff, 0xffff, 0xd6ba, 0xbdf7, 0x94b2, 0x0000, 0x0000,
0x0020, 0x0000, 0xc618, 0xffff, 0x2104, 0x0000, 0x0901, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x0901, 0x0000, 0x18a3, 0xffff, 0xf79e, 0x3186, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xce59, 0xffff, 0x5b0b, 0x39c7, 0x39a7, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x39c7, 0x5acb, 0xffff, 0xce59, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0x6b4d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xdefb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0841, 0xa534, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xc618, 0x5aeb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000};


const uint16_t ccBatt80[] PROGMEM = {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0841, 0xa534, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xc618, 0x630c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0x6b4d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xdefb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xce59, 0xffff, 0x5b0b, 0x39c7, 0x39a7, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x31a7, 0x29e7, 0x29e7, 0x31e7, 0x39e7, 0x5aaa, 0xffff, 0xce59, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0xc618, 0xffff, 0x2104, 0x0000, 0x0901, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x08c0, 0x3000, 0x2800, 0x3000, 0x0000, 0x10c3, 0xffff, 0xf79e, 0x3186, 0x0000, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0xc638, 0xffff, 0x2925, 0x1182, 0x5e4b, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x4deb, 0x6549, 0xf820, 0xf800, 0xf820, 0x5800, 0x1145, 0xffff, 0xffff, 0xd6ba, 0xbdf7, 0x94b2, 0x0000, 0x0000,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55ca, 0x4d49, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d49, 0x458a, 0x5ce8, 0xf000, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffff, 0xffff, 0xd69a, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55eb, 0x4d69, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d69, 0x458a, 0x5ce9, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffdf, 0xffff, 0xc618, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55eb, 0x4d69, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d69, 0x458a, 0x5ce9, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffff, 0xffff, 0xc638, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55eb, 0x4d69, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d69, 0x458a, 0x5ce9, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffff, 0xffff, 0xc638, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55eb, 0x4d69, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d69, 0x458a, 0x5ce9, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffdf, 0xffff, 0xc618, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55ca, 0x4d49, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d49, 0x458a, 0x5ce8, 0xf000, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffff, 0xffff, 0xd69a, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2925, 0x1182, 0x5e4b, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x4deb, 0x6549, 0xf820, 0xf800, 0xf820, 0x5800, 0x1145, 0xffff, 0xffff, 0xd6ba, 0xbdf7, 0x94b2, 0x0000, 0x0000,
0x0020, 0x0000, 0xc618, 0xffff, 0x2104, 0x0000, 0x0901, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x08c0, 0x3000, 0x2800, 0x3000, 0x0000, 0x10c3, 0xffff, 0xf79e, 0x3186, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xce59, 0xffff, 0x5b0b, 0x39c7, 0x39a7, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x31a7, 0x29e7, 0x29e7, 0x31e7, 0x39e7, 0x5aaa, 0xffff, 0xce59, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0x6b4d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xdefb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0841, 0xa534, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xc618, 0x5aeb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000};


const uint16_t ccBatt60[] PROGMEM = {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0841, 0xa534, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xc618, 0x630c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0x6b4d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xdefb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xce59, 0xffff, 0x5b0b, 0x39c7, 0x39a7, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x31c7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x31e7, 0x39e7, 0x5aaa, 0xffff, 0xce59, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0xc618, 0xffff, 0x2104, 0x0000, 0x0901, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x0100, 0x1820, 0x3000, 0x3000, 0x3000, 0x3000, 0x2800, 0x3000, 0x0000, 0x10c3, 0xffff, 0xf79e, 0x3186, 0x0000, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0xc638, 0xffff, 0x2925, 0x1182, 0x5e4b, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55aa, 0x464b, 0xaae5, 0xf800, 0xf820, 0xf800, 0xf800, 0xf800, 0xf820, 0x5800, 0x1145, 0xffff, 0xffff, 0xd6ba, 0xbdf7, 0x94b2, 0x0000, 0x0000,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55ca, 0x4d49, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d49, 0x3dca, 0xa2a4, 0xf800, 0xf000, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffff, 0xffff, 0xd69a, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55eb, 0x4d69, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d49, 0x3dea, 0xa2a4, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffdf, 0xffff, 0xc618, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55eb, 0x4d69, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d49, 0x3dea, 0xa2a4, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffff, 0xffff, 0xc638, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55eb, 0x4d69, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d49, 0x3dea, 0xa2a4, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffff, 0xffff, 0xc638, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55eb, 0x4d69, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d6a, 0x4d49, 0x3dea, 0xa2a4, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffdf, 0xffff, 0xc618, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55ca, 0x4d49, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d69, 0x4d49, 0x3dca, 0xa2a4, 0xf800, 0xf000, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffff, 0xffff, 0xd69a, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2925, 0x1182, 0x5e4b, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55aa, 0x464b, 0xaae5, 0xf800, 0xf820, 0xf800, 0xf800, 0xf800, 0xf820, 0x5800, 0x1145, 0xffff, 0xffff, 0xd6ba, 0xbdf7, 0x94b2, 0x0000, 0x0000,
0x0020, 0x0000, 0xc618, 0xffff, 0x2104, 0x0000, 0x0901, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x0100, 0x1820, 0x3000, 0x3000, 0x3000, 0x3000, 0x2800, 0x3000, 0x0000, 0x10c3, 0xffff, 0xf79e, 0x3186, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xce59, 0xffff, 0x5b0b, 0x39c7, 0x39a7, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x31c7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x31e7, 0x39e7, 0x5aaa, 0xffff, 0xce59, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0x6b4d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xdefb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0841, 0xa534, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xc618, 0x5aeb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000};


const uint16_t ccBatt40[] PROGMEM = {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0841, 0xa534, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xc618, 0x630c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0x6b4d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xdefb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xce59, 0xffff, 0x5b0b, 0x39c7, 0x39a7, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x29c7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x31e7, 0x39e7, 0x5aaa, 0xffff, 0xce59, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0xc618, 0xffff, 0x2104, 0x0000, 0x0901, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x2800, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x2800, 0x3000, 0x0000, 0x10c3, 0xffff, 0xf79e, 0x3186, 0x0000, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0xc638, 0xffff, 0x2925, 0x1182, 0x5e4b, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ea, 0x55aa, 0xf881, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf820, 0x5800, 0x1145, 0xffff, 0xffff, 0xd6ba, 0xbdf7, 0x94b2, 0x0000, 0x0000,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55ca, 0x4d49, 0x4d69, 0x4d69, 0x4d49, 0x4d69, 0x4d49, 0xe860, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffff, 0xffff, 0xd69a, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55eb, 0x4d69, 0x4d6a, 0x4d6a, 0x4d69, 0x4d8a, 0x5549, 0xe860, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffdf, 0xffff, 0xc618, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55eb, 0x4d69, 0x4d6a, 0x4d6a, 0x4d69, 0x4d8a, 0x5549, 0xe860, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffff, 0xffff, 0xc638, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55eb, 0x4d69, 0x4d6a, 0x4d6a, 0x4d69, 0x4d8a, 0x5549, 0xe860, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffff, 0xffff, 0xc638, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55eb, 0x4d69, 0x4d6a, 0x4d6a, 0x4d69, 0x4d8a, 0x5549, 0xe860, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffdf, 0xffff, 0xc618, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55ca, 0x4d49, 0x4d69, 0x4d69, 0x4d49, 0x4d69, 0x4d49, 0xe860, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffff, 0xffff, 0xd69a, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2925, 0x1182, 0x5e4b, 0x55ca, 0x55ca, 0x55ca, 0x55ca, 0x55ea, 0x55aa, 0xf881, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf820, 0x5800, 0x1145, 0xffff, 0xffff, 0xd6ba, 0xbdf7, 0x94b2, 0x0000, 0x0000,
0x0020, 0x0000, 0xc618, 0xffff, 0x2104, 0x0000, 0x0901, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x2800, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x2800, 0x3000, 0x0000, 0x10c3, 0xffff, 0xf79e, 0x3186, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xce59, 0xffff, 0x5b0b, 0x39c7, 0x39a7, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x3987, 0x29c7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x31e7, 0x39e7, 0x5aaa, 0xffff, 0xce59, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0x6b4d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xdefb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0841, 0xa534, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xc618, 0x5aeb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000};


const uint16_t ccBatt20[] PROGMEM = {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0841, 0xa534, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xc618, 0x630c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0x6b4d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xdefb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xce59, 0xffff, 0x5b0b, 0x39c7, 0x39a7, 0x3987, 0x3987, 0x31a7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x31e7, 0x39e7, 0x5aaa, 0xffff, 0xce59, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0xc618, 0xffff, 0x2104, 0x0000, 0x0901, 0x00e0, 0x0100, 0x1060, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x2800, 0x3000, 0x0000, 0x10c3, 0xffff, 0xf79e, 0x3186, 0x0000, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0xc638, 0xffff, 0x2925, 0x1182, 0x5e4b, 0x55aa, 0x464b, 0x9b86, 0xf800, 0xf820, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf820, 0x5800, 0x1145, 0xffff, 0xffff, 0xd6ba, 0xbdf7, 0x94b2, 0x0000, 0x0000,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55ca, 0x4d29, 0x3dca, 0x8b25, 0xf800, 0xf000, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffff, 0xffff, 0xd69a, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55eb, 0x4d49, 0x3dea, 0x9346, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffdf, 0xffff, 0xc618, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55eb, 0x4d49, 0x3dea, 0x9346, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffff, 0xffff, 0xc638, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55eb, 0x4d49, 0x3dea, 0x9346, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffff, 0xffff, 0xc638, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55eb, 0x4d49, 0x3dea, 0x9346, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffdf, 0xffff, 0xc618, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0961, 0x55ca, 0x4d29, 0x3dca, 0x8b25, 0xf800, 0xf000, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffff, 0xffff, 0xd69a, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2925, 0x1182, 0x5e4b, 0x55aa, 0x464b, 0x9b86, 0xf800, 0xf820, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf820, 0x5800, 0x1145, 0xffff, 0xffff, 0xd6ba, 0xbdf7, 0x94b2, 0x0000, 0x0000,
0x0020, 0x0000, 0xc618, 0xffff, 0x2104, 0x0000, 0x0901, 0x00e0, 0x0100, 0x1060, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x2800, 0x3000, 0x0000, 0x10c3, 0xffff, 0xf79e, 0x3186, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xce59, 0xffff, 0x5b0b, 0x39c7, 0x39a7, 0x3987, 0x3987, 0x31a7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x31e7, 0x39e7, 0x5aaa, 0xffff, 0xce59, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0x6b4d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xdefb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0841, 0xa534, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xc618, 0x5aeb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000};


const uint16_t ccBatt00[] PROGMEM = {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0841, 0xa534, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xc618, 0x630c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0x6b4d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xdefb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xce59, 0xffff, 0x5b0b, 0x39c7, 0x31e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x31e7, 0x39e7, 0x5aaa, 0xffff, 0xce59, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0xc618, 0xffff, 0x2104, 0x0000, 0x2800, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x2800, 0x3000, 0x0000, 0x10c3, 0xffff, 0xf79e, 0x3186, 0x0000, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x09a2, 0xf183, 0xf800, 0xf820, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf820, 0x5800, 0x1145, 0xffff, 0xffff, 0xd6ba, 0xbdf7, 0x94b2, 0x0000, 0x0000,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0981, 0xe162, 0xf800, 0xf000, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffff, 0xffff, 0xd69a, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0982, 0xe162, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffdf, 0xffff, 0xc618, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0982, 0xe162, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffff, 0xffff, 0xc638, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0982, 0xe162, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffff, 0xffff, 0xc638, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0982, 0xe162, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffdf, 0xffff, 0xc618, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x0981, 0xe162, 0xf800, 0xf000, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf000, 0xf800, 0x5000, 0x1124, 0xffff, 0xffff, 0xffff, 0xffff, 0xd69a, 0x0000, 0x0020,
0x0020, 0x0000, 0xc638, 0xffff, 0x2905, 0x09a2, 0xf183, 0xf800, 0xf820, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf800, 0xf820, 0x5800, 0x1145, 0xffff, 0xffff, 0xd6ba, 0xbdf7, 0x94b2, 0x0000, 0x0000,
0x0020, 0x0000, 0xc618, 0xffff, 0x2104, 0x0000, 0x2800, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x2800, 0x3000, 0x0000, 0x10c3, 0xffff, 0xf79e, 0x3186, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xce59, 0xffff, 0x5b0b, 0x39c7, 0x31e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x29e7, 0x31e7, 0x39e7, 0x5aaa, 0xffff, 0xce59, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
0x0020, 0x0000, 0x6b4d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xdefb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0841, 0xa534, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xbdf7, 0xc618, 0x5aeb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000};

Credits

Christopher
2 projects • 8 followers
I love to design and create electronic gadgets and this channel enables me to share what I have done, so others can hopefully benefit.
Contact

Comments

Please log in or sign up to comment.