#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#define TFT_CS 10
#define TFT_DC 9
#define SD_CS 6
#define ROW_HEIGHT 64
#define COL_WIDTH 80
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
//w 32 h 34
const unsigned char PROGMEM gas[] =
{
0x3f, 0xff, 0xe0, 0x0,
0x7f, 0xff, 0xf0, 0x0,
0x7f, 0xff, 0xf1, 0xf0,
0x60, 0x0, 0x30, 0x78,
0x60, 0x0, 0x30, 0x3c,
0x60, 0x0, 0x30, 0x1e,
0x60, 0x0, 0x30, 0xe,
0x60, 0x0, 0x30, 0xf,
0x60, 0x0, 0x30, 0xf,
0x60, 0x0, 0x30, 0x8,
0x60, 0x0, 0x30, 0x8,
0x60, 0x0, 0x30, 0x8,
0x60, 0x0, 0x30, 0x8,
0x7f, 0xff, 0xf0, 0x8,
0x7f, 0xff, 0xf0, 0x8,
0x7f, 0xff, 0xfc, 0xc,
0x7f, 0xff, 0xf3, 0x4,
0x7f, 0xff, 0xf1, 0x4,
0x7f, 0xff, 0xf1, 0x4,
0x7f, 0xff, 0xf1, 0x4,
0x7f, 0xff, 0xf1, 0x2,
0x7f, 0xff, 0xf1, 0x2,
0x7f, 0xff, 0xf1, 0x2,
0x7f, 0xff, 0xf1, 0x2,
0x7f, 0xff, 0xf1, 0x1,
0x7f, 0xff, 0xf1, 0x1,
0x7f, 0xff, 0xf1, 0x1,
0x7f, 0xff, 0xf1, 0x2,
0x7f, 0xff, 0xf0, 0xcc,
0x7f, 0xff, 0xf0, 0x38,
0x7f, 0xff, 0xf0, 0x0,
0x7f, 0xff, 0xf0, 0x0,
0xff, 0xff, 0xf8, 0x0,
0xff, 0xff, 0xf8, 0x0
};
//w 32 h 31
const unsigned char PROGMEM arrowR[] =
{
0x0, 0x0, 0x0, 0x0,
0x0, 0x1, 0x80, 0x0,
0x0, 0x1, 0xc0, 0x0,
0x0, 0x1, 0xe0, 0x0,
0x0, 0x1, 0xf0, 0x0,
0x0, 0x1, 0xf8, 0x0,
0x0, 0x1, 0xfc, 0x0,
0x0, 0x1, 0xfe, 0x0,
0x0, 0x1, 0xff, 0x0,
0xff, 0xff, 0xff, 0x80,
0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xf8,
0xff, 0xff, 0xff, 0xfc,
0xff, 0xff, 0xff, 0xfe,
0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfe,
0xff, 0xff, 0xff, 0xfc,
0xff, 0xff, 0xff, 0xf8,
0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0x80,
0x0, 0x1, 0xff, 0x0,
0x0, 0x1, 0xfe, 0x0,
0x0, 0x1, 0xfc, 0x0,
0x0, 0x1, 0xf8, 0x0,
0x0, 0x1, 0xf0, 0x0,
0x0, 0x1, 0xe0, 0x0,
0x0, 0x1, 0xc0, 0x0,
0x0, 0x1, 0x80, 0x0,
0x0, 0x0, 0x0, 0x0
};
//w 46 h 25
const unsigned char PROGMEM high[] =
{
0x0, 0x0, 0x0, 0xff, 0x80, 0x0,
0x7f, 0xff, 0xe1, 0xff, 0xf8, 0x0,
0x7f, 0xff, 0xe1, 0xe7, 0xfe, 0x0,
0x0, 0x0, 0x3, 0x80, 0x1f, 0x80,
0x0, 0x0, 0x3, 0x0, 0x7, 0xc0,
0x0, 0x0, 0x7, 0x0, 0x1, 0xe0,
0xff, 0xff, 0xc7, 0x0, 0x0, 0xf0,
0xff, 0xff, 0xc6, 0x0, 0x0, 0x70,
0x0, 0x0, 0x6, 0x0, 0x0, 0x38,
0x0, 0x0, 0x6, 0x0, 0x0, 0x18,
0xff, 0xff, 0xce, 0x0, 0x0, 0x1c,
0xff, 0xff, 0xce, 0x0, 0x0, 0x1c,
0x0, 0x0, 0xe, 0x0, 0x0, 0xc,
0x0, 0x0, 0xe, 0x0, 0x0, 0x1c,
0x0, 0x0, 0x6, 0x0, 0x0, 0x1c,
0xff, 0xff, 0xc6, 0x0, 0x0, 0x18,
0xff, 0xff, 0xc6, 0x0, 0x0, 0x38,
0x0, 0x0, 0x6, 0x0, 0x0, 0x70,
0x0, 0x0, 0x7, 0x0, 0x0, 0xf0,
0x0, 0x0, 0x3, 0x0, 0x1, 0xe0,
0x7f, 0xff, 0xe3, 0x80, 0x7, 0xc0,
0x7f, 0xff, 0xe3, 0x80, 0x1f, 0x80,
0x0, 0x0, 0x1, 0xe7, 0xfe, 0x0,
0x0, 0x0, 0x1, 0xff, 0xf8, 0x0,
0x0, 0x0, 0x0, 0xff, 0x80, 0x0
};
//w 32 h 31
const unsigned char PROGMEM arrowL[] =
{
0x0, 0x0, 0x0, 0x0,
0x0, 0x1, 0x80, 0x0,
0x0, 0x3, 0x80, 0x0,
0x0, 0x7, 0x80, 0x0,
0x0, 0xf, 0x80, 0x0,
0x0, 0x1f, 0x80, 0x0,
0x0, 0x3f, 0x80, 0x0,
0x0, 0x7f, 0x80, 0x0,
0x0, 0xff, 0x80, 0x0,
0x1, 0xff, 0xff, 0xff,
0x3, 0xff, 0xff, 0xff,
0xf, 0xff, 0xff, 0xff,
0x1f, 0xff, 0xff, 0xff,
0x3f, 0xff, 0xff, 0xff,
0x7f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff,
0x7f, 0xff, 0xff, 0xff,
0x3f, 0xff, 0xff, 0xff,
0x1f, 0xff, 0xff, 0xff,
0xf, 0xff, 0xff, 0xff,
0x3, 0xff, 0xff, 0xff,
0x1, 0xff, 0xff, 0xff,
0x0, 0xff, 0x80, 0x0,
0x0, 0x7f, 0x80, 0x0,
0x0, 0x3f, 0x80, 0x0,
0x0, 0x1f, 0x80, 0x0,
0x0, 0xf, 0x80, 0x0,
0x0, 0x7, 0x80, 0x0,
0x0, 0x3, 0x80, 0x0,
0x0, 0x1, 0x80, 0x0,
0x0, 0x0, 0x0, 0x0
};
//w 38 h 32
const unsigned char PROGMEM fog[] =
{
0x0, 0x3, 0xf0, 0x0, 0x0,
0x0, 0x1f, 0xfc, 0x0, 0x0,
0x0, 0x7e, 0x1e, 0x3, 0x0,
0x0, 0xf0, 0x7, 0x1, 0x80,
0x3, 0xc0, 0x3, 0x1, 0x80,
0x7, 0x80, 0x3, 0x80, 0x80,
0xe, 0x0, 0x1, 0x80, 0x80,
0x1c, 0x0, 0x1, 0x80, 0xc0,
0x18, 0x0, 0x0, 0xdf, 0xfc,
0x38, 0x0, 0x0, 0xc0, 0xc0,
0x70, 0x0, 0x0, 0xc0, 0xc0,
0x60, 0x0, 0x0, 0xc0, 0xc0,
0x60, 0x0, 0x0, 0xc0, 0xc0,
0xe0, 0x0, 0x0, 0xc0, 0xc0,
0xc0, 0x0, 0x0, 0xc0, 0x80,
0xc0, 0x0, 0x0, 0xc0, 0x80,
0xc0, 0x0, 0x0, 0xcf, 0xf8,
0xc0, 0x0, 0x0, 0xcf, 0xf8,
0xe0, 0x0, 0x0, 0xc1, 0x80,
0x60, 0x0, 0x0, 0xc1, 0x80,
0x60, 0x0, 0x0, 0xc1, 0x0,
0x70, 0x0, 0x0, 0xc1, 0x0,
0x30, 0x0, 0x0, 0xc1, 0x0,
0x38, 0x0, 0x0, 0xc1, 0x0,
0x1c, 0x0, 0x1, 0xdf, 0xfc,
0xe, 0x0, 0x1, 0x9f, 0xfc,
0x7, 0x80, 0x1, 0x81, 0x80,
0x3, 0xc0, 0x3, 0x81, 0x80,
0x0, 0xf0, 0x7, 0x1, 0x80,
0x0, 0x7e, 0x1e, 0x0, 0x80,
0x0, 0x1f, 0xfc, 0x0, 0xc0,
0x0, 0x3, 0xf0, 0x0, 0x0
};
//w 53 h 32
const unsigned char PROGMEM engine[] =
{
0x0, 0x1, 0xff, 0xff, 0xe0, 0x0, 0x0,
0x0, 0x3, 0xff, 0xff, 0xe0, 0x0, 0x0,
0x0, 0x1, 0xff, 0xff, 0xe0, 0x0, 0x0,
0x0, 0x0, 0x7, 0xf8, 0x0, 0x0, 0x0,
0x0, 0x0, 0x7, 0xf8, 0x0, 0x0, 0x0,
0x0, 0x3, 0xff, 0xff, 0xe0, 0x0, 0x0,
0x0, 0x7, 0xff, 0xff, 0xf0, 0x0, 0x0,
0x0, 0x7, 0xff, 0xff, 0xf0, 0x0, 0x0,
0x21, 0xfe, 0x0, 0x0, 0x30, 0x0, 0x0,
0xe1, 0xfe, 0x0, 0x0, 0x3f, 0xc0, 0x0,
0xe1, 0x80, 0x0, 0x0, 0x3f, 0xc0, 0x0,
0xe1, 0x80, 0x0, 0x0, 0x0, 0xc0, 0x0,
0xe1, 0x80, 0x0, 0x0, 0x0, 0xc3, 0xc0,
0xe1, 0x80, 0x0, 0x0, 0x0, 0xc7, 0xf0,
0xe1, 0x80, 0x0, 0x0, 0x0, 0xc7, 0xf0,
0xfd, 0x80, 0x0, 0x0, 0x0, 0xc6, 0x30,
0xfd, 0x80, 0x0, 0x0, 0x0, 0xfe, 0x38,
0x7d, 0x80, 0x0, 0x0, 0x0, 0x7c, 0x38,
0x7d, 0x80, 0x0, 0x0, 0x0, 0x0, 0x18,
0x61, 0x80, 0x0, 0x0, 0x0, 0x0, 0x18,
0x61, 0x80, 0x0, 0x0, 0x0, 0x0, 0x18,
0x61, 0x80, 0x0, 0x0, 0x0, 0x0, 0x18,
0x61, 0x80, 0x0, 0x0, 0x0, 0x0, 0x18,
0x61, 0x80, 0x0, 0x0, 0x0, 0x7c, 0x38,
0x61, 0x80, 0x0, 0x0, 0x0, 0xfe, 0x38,
0x61, 0xff, 0x0, 0x0, 0x0, 0xc6, 0x30,
0x21, 0xff, 0x80, 0x0, 0x0, 0xc6, 0x30,
0x0, 0x3, 0xc0, 0x0, 0x0, 0xc7, 0xf0,
0x0, 0x1, 0xe0, 0x0, 0x0, 0xc3, 0xe0,
0x0, 0x0, 0xf0, 0x0, 0x0, 0xc0, 0x0,
0x0, 0x0, 0x3f, 0xff, 0xff, 0xc0, 0x0,
0x0, 0x0, 0x1f, 0xff, 0xff, 0xc0, 0x0
};
//w 58 h 32
const unsigned char PROGMEM beam[] =
{
0x0, 0x0, 0x0, 0x3, 0xff, 0x80, 0x0, 0x0,
0x0, 0x0, 0x0, 0x7, 0xff, 0xf8, 0x0, 0x0,
0x0, 0x0, 0x78, 0xf, 0xff, 0xfe, 0x0, 0x0,
0x0, 0xf, 0xf8, 0xe, 0x0, 0xff, 0x80, 0x0,
0x1, 0xff, 0xfc, 0x1e, 0x0, 0xf, 0xe0, 0x0,
0x7f, 0xff, 0x0, 0x1c, 0x0, 0x1, 0xf0, 0x0,
0xff, 0xe0, 0x0, 0x3c, 0x0, 0x0, 0xf8, 0x0,
0xfc, 0x0, 0x38, 0x38, 0x0, 0x0, 0x3c, 0x0,
0x0, 0x3, 0xf8, 0x38, 0x0, 0x0, 0x1e, 0x0,
0x0, 0x7f, 0xfc, 0x38, 0x0, 0x0, 0xf, 0x0,
0xf, 0xff, 0xc0, 0x78, 0x0, 0x0, 0x7, 0x80,
0xff, 0xf8, 0x0, 0x70, 0x0, 0x0, 0x3, 0x80,
0x7f, 0x0, 0x0, 0x70, 0x0, 0x0, 0x3, 0x80,
0x60, 0x0, 0x18, 0x70, 0x0, 0x0, 0x1, 0xc0,
0x0, 0x7, 0xf8, 0x70, 0x0, 0x0, 0x1, 0xc0,
0x0, 0xff, 0xfc, 0x70, 0x0, 0x0, 0x1, 0xc0,
0x1f, 0xff, 0xc0, 0x70, 0x0, 0x0, 0x1, 0xc0,
0xff, 0xf0, 0x0, 0x70, 0x0, 0x0, 0x1, 0xc0,
0x7e, 0x0, 0x0, 0x70, 0x0, 0x0, 0x1, 0xc0,
0x40, 0x0, 0x0, 0x70, 0x0, 0x0, 0x3, 0x80,
0x0, 0x0, 0xf8, 0x78, 0x0, 0x0, 0x3, 0x80,
0x0, 0x3f, 0xfc, 0x38, 0x0, 0x0, 0x7, 0x80,
0xf, 0xff, 0xf0, 0x38, 0x0, 0x0, 0xf, 0x0,
0xff, 0xfe, 0x0, 0x38, 0x0, 0x0, 0x1e, 0x0,
0x7f, 0x80, 0x0, 0x3c, 0x0, 0x0, 0x3c, 0x0,
0x60, 0x0, 0x8, 0x1c, 0x0, 0x0, 0xf8, 0x0,
0x0, 0x3, 0xf8, 0x1e, 0x0, 0x1, 0xf0, 0x0,
0x0, 0x7f, 0xfc, 0x1e, 0x0, 0xf, 0xe0, 0x0,
0x1f, 0xff, 0xe0, 0xf, 0x0, 0xff, 0x80, 0x0,
0xff, 0xf8, 0x0, 0x7, 0xff, 0xfe, 0x0, 0x0,
0x7f, 0x0, 0x0, 0x7, 0xff, 0xf8, 0x0, 0x0,
0x40, 0x0, 0x0, 0x3, 0xff, 0x80, 0x0, 0x0
};
//w 38 h 34
const unsigned char PROGMEM temp[] =
{
0x0, 0x0, 0x70, 0x0, 0x0,
0x0, 0x0, 0x78, 0x0, 0x0,
0x0, 0x0, 0x78, 0x0, 0x0,
0x0, 0x0, 0x78, 0x0, 0x0,
0x0, 0x0, 0x78, 0x0, 0x0,
0x0, 0x0, 0x7f, 0xf0, 0x0,
0x0, 0x0, 0x7f, 0xf0, 0x0,
0x0, 0x0, 0x78, 0x0, 0x0,
0x0, 0x0, 0x78, 0x0, 0x0,
0x0, 0x0, 0x78, 0x0, 0x0,
0x0, 0x0, 0x7f, 0xf0, 0x0,
0x0, 0x0, 0x7f, 0xf0, 0x0,
0x0, 0x0, 0x7f, 0xf0, 0x0,
0x0, 0x0, 0x78, 0x0, 0x0,
0x0, 0x0, 0x78, 0x0, 0x0,
0x0, 0x0, 0x78, 0x0, 0x0,
0x0, 0x0, 0x7f, 0xf0, 0x0,
0x0, 0x0, 0x7f, 0xf0, 0x0,
0x0, 0x0, 0x78, 0x0, 0x0,
0x0, 0x0, 0x78, 0x0, 0x0,
0x0, 0x0, 0x78, 0x0, 0x0,
0x0, 0x0, 0xf8, 0x0, 0x0,
0x0, 0x0, 0xfc, 0x0, 0x0,
0x3c, 0x1, 0xfc, 0x0, 0xe0,
0xff, 0x19, 0xfc, 0x23, 0xfc,
0x7f, 0xf9, 0xfc, 0x7f, 0xf8,
0x3, 0xf8, 0xfc, 0xff, 0x8,
0x0, 0x40, 0x78, 0x10, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0,
0x7c, 0x1f, 0x3, 0xc0, 0xf8,
0xfe, 0x3f, 0xcf, 0xf1, 0xfc,
0x7f, 0xff, 0xff, 0xff, 0xf8,
0x7, 0xf1, 0xfc, 0x3f, 0x80,
0x1, 0xc0, 0x70, 0x1e, 0x0
};
//w 50 h 32
const unsigned char PROGMEM bat[] =
{
0x3, 0xfc, 0x0, 0x0, 0xf, 0xf0, 0x0,
0x3, 0xfc, 0x0, 0x0, 0xf, 0xf0, 0x0,
0x3, 0xfc, 0x0, 0x0, 0xf, 0xf0, 0x0,
0x3, 0xfc, 0x0, 0x0, 0xf, 0xf0, 0x0,
0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
0xe0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x3, 0x0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x3, 0x0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x3, 0x0, 0xc0,
0xc3, 0xfe, 0x0, 0x0, 0x1f, 0xf0, 0xc0,
0xc3, 0xfe, 0x0, 0x0, 0x1f, 0xf0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x3, 0x0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x3, 0x0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x3, 0x0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x3, 0x0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0,
0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80
};
//w 43 h 32
const unsigned char PROGMEM brake[] =
{
0x0, 0x0, 0x3f, 0x80, 0x0, 0x0,
0x0, 0x1, 0xff, 0xf0, 0x0, 0x0,
0x6, 0x7, 0xff, 0xfc, 0xc, 0x0,
0xf, 0xf, 0xc0, 0x7e, 0x1e, 0x0,
0xe, 0x3e, 0x0, 0xf, 0x9e, 0x0,
0x1e, 0x7c, 0x0, 0x7, 0xcf, 0x0,
0x3c, 0x70, 0xe, 0x3, 0xc7, 0x80,
0x3c, 0xe0, 0x1f, 0x1, 0xe7, 0x80,
0x79, 0xe0, 0x1f, 0x0, 0xf3, 0xc0,
0x79, 0xc0, 0x1f, 0x0, 0x73, 0xc0,
0x73, 0xc0, 0x1f, 0x0, 0x71, 0xc0,
0x73, 0x80, 0x1f, 0x0, 0x39, 0xc0,
0xf3, 0x80, 0x1f, 0x0, 0x39, 0xe0,
0xe3, 0x80, 0x1f, 0x0, 0x38, 0xe0,
0xe7, 0x0, 0x1f, 0x0, 0x38, 0xe0,
0xe7, 0x0, 0x1f, 0x0, 0x18, 0xe0,
0xe7, 0x0, 0x1f, 0x0, 0x18, 0xe0,
0xe7, 0x0, 0x1f, 0x0, 0x38, 0xe0,
0xe3, 0x80, 0xe, 0x0, 0x38, 0xe0,
0xf3, 0x80, 0x0, 0x0, 0x39, 0xe0,
0x73, 0x80, 0x0, 0x0, 0x39, 0xc0,
0x73, 0xc0, 0xc, 0x0, 0x71, 0xc0,
0x79, 0xc0, 0x1e, 0x0, 0x73, 0xc0,
0x39, 0xe0, 0x1f, 0x0, 0xf3, 0x80,
0x3c, 0xe0, 0x1f, 0x1, 0xe7, 0x80,
0x3c, 0x70, 0xe, 0x3, 0xc7, 0x80,
0x1e, 0x7c, 0x0, 0x7, 0x8f, 0x0,
0xf, 0x3e, 0x0, 0xf, 0x9e, 0x0,
0xf, 0xf, 0xc0, 0x7e, 0x1e, 0x0,
0x6, 0x7, 0xff, 0xfc, 0xc, 0x0,
0x0, 0x1, 0xff, 0xf0, 0x0, 0x0,
0x0, 0x0, 0x3f, 0x80, 0x0, 0x0
};
//w 66 h 28
const unsigned char PROGMEM oil[] =
{
0x30, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x3e, 0x0, 0x1f, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x3f, 0xc0, 0x1f, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x33, 0xf8, 0x1f, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x60, 0x7c, 0x1f, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x60, 0xc, 0x7, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0,
0x60, 0x1c, 0x7, 0x80, 0x0, 0x0, 0x0, 0x30, 0x0,
0x40, 0x1c, 0x7, 0x80, 0x0, 0x0, 0x3, 0xf8, 0x0,
0xf0, 0x1f, 0xff, 0xff, 0x80, 0x0, 0x1f, 0xfc, 0x0,
0xfc, 0x3f, 0xff, 0xff, 0xc0, 0x1, 0xff, 0xfe, 0x0,
0x1f, 0xff, 0xff, 0xff, 0xe0, 0x1f, 0xff, 0x9c, 0x0,
0x3, 0xfc, 0x0, 0x0, 0xf1, 0xff, 0xfc, 0x8, 0x0,
0x0, 0xfc, 0x0, 0x0, 0x7f, 0xfe, 0x38, 0x0, 0x0,
0x0, 0x3c, 0x0, 0x0, 0x3f, 0xf0, 0x78, 0x0, 0x0,
0x0, 0x3c, 0x0, 0x0, 0x1f, 0x0, 0xf0, 0x3, 0x0,
0x0, 0x3c, 0x0, 0x0, 0x8, 0x0, 0xe0, 0x7, 0x80,
0x0, 0x3c, 0x0, 0x0, 0x0, 0x1, 0xc0, 0x7, 0x80,
0x0, 0x3c, 0x0, 0x0, 0x0, 0x3, 0xc0, 0xf, 0xc0,
0x0, 0x3c, 0x0, 0x0, 0x0, 0x7, 0x80, 0xf, 0xc0,
0x0, 0x3c, 0x0, 0x0, 0x0, 0xf, 0x0, 0xf, 0xc0,
0x0, 0x3c, 0x0, 0x0, 0x0, 0xe, 0x0, 0xf, 0xc0,
0x0, 0x1e, 0x0, 0x0, 0x0, 0x1c, 0x0, 0x7, 0x80,
0x0, 0x1e, 0x0, 0x0, 0x0, 0x3c, 0x0, 0x3, 0x0,
0x0, 0x1e, 0x0, 0x0, 0x0, 0x78, 0x0, 0x0, 0x0,
0x0, 0x1e, 0x0, 0x0, 0x0, 0xf0, 0x0, 0x0, 0x0,
0x0, 0x1f, 0xff, 0xff, 0xff, 0xe0, 0x0, 0x0, 0x0,
0x0, 0x1f, 0xff, 0xff, 0xff, 0xc0, 0x0, 0x0, 0x0,
0x0, 0x1f, 0xff, 0xff, 0xff, 0xc0, 0x0, 0x0, 0x0
};
void setup() {
tft.begin();
tft.setRotation(0);
tft.fillScreen(ILI9341_BLACK);
//drawLimits();
//drawLimitsVertical();
//firstRow
drawBitmapCenter(COL_WIDTH / 2, ROW_HEIGHT / 2, arrowL, 32, 31, ILI9341_GREEN);
drawBitmapCenter(COL_WIDTH * 2 - (COL_WIDTH / 2), ROW_HEIGHT / 2, high, 46, 25, ILI9341_CYAN);
drawBitmapCenter(COL_WIDTH * 3 - (COL_WIDTH / 2), ROW_HEIGHT / 2, arrowR, 32, 31, ILI9341_GREEN);
//secondRow
drawBitmapCenter(COL_WIDTH / 2, ROW_HEIGHT * 2 - (ROW_HEIGHT / 2), fog, 38, 32, ILI9341_ORANGE);
drawBitmapCenter(COL_WIDTH * 2 - (COL_WIDTH / 2), ROW_HEIGHT * 2 - (ROW_HEIGHT / 2), engine, 53, 32, ILI9341_YELLOW);
drawBitmapCenter(COL_WIDTH * 3 - (COL_WIDTH / 2), ROW_HEIGHT * 2 - (ROW_HEIGHT / 2), beam, 58, 32, ILI9341_GREEN);
//temp
drawBitmapCenter(120, ROW_HEIGHT * 2 + 25, temp, 38, 34, ILI9341_WHITE);
drawHorizontalBar(15, ROW_HEIGHT * 2 + 45, 230, 30, 8, 18, ILI9341_WHITE, false, 30);
//fuel
//tft.drawBitmap(110, ROW_HEIGHT * 3 + 10, gas, 32, 34, ILI9341_WHITE);
drawBitmapCenter(120, ROW_HEIGHT * 3 + 25, gas, 32, 34, ILI9341_WHITE);
drawHorizontalBar(15, ROW_HEIGHT * 3 + 45, 230, 30, 8, 18, ILI9341_WHITE, true, 210);
//lastRow
//secondRow
drawBitmapCenter(COL_WIDTH / 2, ROW_HEIGHT * 5 - (ROW_HEIGHT / 2), bat, 50, 32, ILI9341_RED);
drawBitmapCenter(COL_WIDTH * 2 - (COL_WIDTH / 2), ROW_HEIGHT * 5 - (ROW_HEIGHT / 2), brake, 43, 32, ILI9341_RED);
drawBitmapCenter(COL_WIDTH * 3 - (COL_WIDTH / 2), ROW_HEIGHT * 5 - (ROW_HEIGHT / 2), oil, 66, 28, ILI9341_RED);
}
void loop() {
}
void drawHorizontalBar(int x, int y, int width, int height, int progress, int maxProgress, uint16_t color, bool startRed, int redStart) {
if (startRed) {
// Draw the outline of the bar
tft.drawLine(x, y, width - redStart, y, ILI9341_RED);
tft.drawLine(width - redStart, y, width, y, color);
tft.drawLine(x, y, x, y + 14, ILI9341_RED);
tft.drawLine(width, y, width, y + 14, color);
} else {
// Draw the outline of the bar
tft.drawLine(x, y, width - redStart, y, color);
tft.drawLine(width - redStart, y, width, y, ILI9341_RED);
tft.drawLine(x, y, x, y + 14, color);
tft.drawLine(width, y, width, y + 14, ILI9341_RED);
}
// Calculate the width of the progress bar
int barWidth = map(progress, 0, maxProgress, 0, width);
// Draw the progress bar
tft.fillRect(x + 4, y + 4, barWidth - 8, height / 2, color);
}
void drawLimits() {
int rectHeight = 64;
int rectWidth = 240;
int startX = 0;
int startY = 0;
for (int i = 0; i < 5; i++) {
tft.drawRect(startX, startY + (i * (rectHeight )), rectWidth, rectHeight, ILI9341_GREEN);
}
}
void drawLimitsVertical() {
int rectHeight = 320;
int rectWidth = 80;
int startX = 0;
int startY = 0;
for (int i = 0; i < 5; i++) {
tft.drawRect(startX + (i * (rectWidth )), startY, rectWidth, rectHeight, ILI9341_GREEN);
}
}
void drawBitmapCenter(int x, int y, const uint8_t* ico, int width, int height, uint16_t color) {
tft.drawBitmap(x - (width / 2), y - (height / 2), ico, width, height, color);
}