#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
static const unsigned char image_Zasi_g_na_paliwie_V_2_bits[] U8X8_PROGMEM = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x02,0x00,0x00,0x00,0x00,0x65,0x03,0x00,0x00,0x00,0x00,0xa3,0x02,0x00,0x00,0x00,0x00,0x25,0x02,0x00,0x00,0x00,0x00,0x29,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0xf8,0x00,0x00,0x00,0x00,0x30,0xfc,0x01,0x00,0x00,0xfe,0x7f,0xfc,0x01,0x00,0x00,0xfe,0xff,0xfc,0x01,0x00,0x00,0xfe,0x7f,0xfc,0x01,0x00,0x00,0x00,0x30,0xfc,0x01,0x00,0x00,0x00,0x10,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
static const unsigned char image_Ilo___paliwa_V_2_bits[] U8X8_PROGMEM = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xbe,0x03,0x00,0x00,0x00,0x40,0x88,0x02,0x00,0x00,0x00,0x40,0x88,0x01,0x00,0x00,0x00,0x40,0x88,0x02,0x00,0x00,0x00,0xc0,0x89,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x10,0x00,0x00,0x00,0x7f,0x00,0x30,0x00,0x00,0x00,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x7f,0xfe,0xff,0x00,0x00,0x00,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x7f,0x00,0x30,0x00,0x00,0x00,0x3e,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
static const unsigned char image_Czas_od_uruchomienia_silnika_V_2_bits[] U8X8_PROGMEM = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x92,0x00,0x00,0x00,0x00,0x00,0xb2,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x3e,0x7c,0x10,0x00,0x00,0x00,0x7f,0x00,0x30,0x00,0x00,0x00,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x7f,0xfe,0xff,0x00,0x00,0x00,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x7f,0x00,0x30,0x00,0x00,0x00,0x3e,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
static const unsigned char image_LPG_na_100_km_V_2_bits[] U8X8_PROGMEM = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xb8,0x07,0x00,0x00,0x00,0x80,0xa8,0x00,0x00,0x00,0x00,0x80,0xb8,0x06,0x00,0x00,0x00,0x80,0x88,0x04,0x00,0x00,0x00,0x80,0x8b,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xec,0xbd,0x14,0x01,0x00,0x00,0x2a,0xa5,0xb2,0x01,0x00,0x00,0x28,0xa5,0x51,0x01,0x00,0x00,0x28,0xa5,0x12,0x01,0x00,0x00,0xe8,0xbd,0x14,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
static const unsigned char image__rednia_pr_dko___V_2_bits[] U8X8_PROGMEM = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x45,0x09,0x00,0x00,0x00,0xa0,0x6c,0x09,0x00,0x00,0x00,0x60,0x54,0x0f,0x00,0x00,0x00,0xa0,0x44,0x09,0x00,0x00,0x00,0x20,0x45,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0xf8,0x00,0x00,0x00,0x00,0x30,0xfc,0x01,0x00,0x00,0xfe,0x7f,0xfc,0x01,0x00,0x00,0xfe,0xff,0xfc,0x01,0x00,0x00,0xfe,0x7f,0xfc,0x01,0x00,0x00,0x00,0x30,0xfc,0x01,0x00,0x00,0x00,0x10,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
static const unsigned char image_Spalanie_Chwilowe_V_2_bits[] U8X8_PROGMEM = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xec,0xbd,0x14,0x01,0x00,0x00,0x2a,0xa5,0xb2,0x01,0x00,0x00,0x28,0xa5,0x51,0x01,0x00,0x00,0x28,0xa5,0x12,0x01,0x00,0x00,0xe8,0xbd,0x14,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
static const unsigned char image_Arrow_Up_V_2_bits[] U8X8_PROGMEM = {0xc0,0x00,0xe0,0x01,0xf0,0x03,0xf8,0x07,0xfc,0x0f,0xfe,0x1f,0xff,0x3f};
static const unsigned char image_Arrow_Down_V_2_bits[] U8X8_PROGMEM = {0xff,0x3f,0xfe,0x1f,0xfc,0x0f,0xf8,0x07,0xf0,0x03,0xe0,0x01,0xc0,0x00};
static const unsigned char image_Warstwa_3_bits[] U8X8_PROGMEM = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x01,0xf8,0x0f,0xc0,0x7f,0x00,0xfe,0x03,0x00,0xc0,0xff,0x07,0xfe,0x3f,0xf0,0xff,0x81,0xff,0x0f,0x00,0x60,0x00,0x0c,0x03,0x60,0x18,0x00,0xc3,0x00,0x18,0x00,0x30,0x00,0x98,0x01,0xc0,0x0c,0x00,0x66,0x00,0x30,0x00,0x18,0x00,0xf0,0x00,0x80,0x07,0x00,0x3c,0x00,0x60,0x00,0x0c,0x00,0x60,0x00,0x00,0x03,0x00,0x18,0x00,0xc0,0x00,0x06,0x00,0xf0,0x00,0x80,0x07,0x00,0x3c,0x00,0x80,0x01,0x02,0x00,0xf0,0x00,0x80,0x07,0x00,0x3c,0x00,0x00,0x01,0x03,0x00,0x98,0x01,0xc0,0x0c,0x00,0x66,0x00,0x00,0x03,0x03,0x00,0x98,0x01,0xc0,0x0c,0x00,0x66,0x00,0x00,0x03,0x03,0x00,0x98,0x01,0xc0,0x0c,0x00,0x66,0x00,0x00,0x03,0x03,0x00,0x98,0x01,0xc0,0x0c,0x00,0x66,0x00,0x00,0x03,0x03,0x00,0x98,0x01,0xc0,0x0c,0x00,0x66,0x00,0x00,0x03,0x03,0x00,0x98,0x01,0xc0,0x0c,0x00,0x66,0x00,0x00,0x03,0x03,0x00,0x98,0x01,0xc0,0x0c,0x00,0x66,0x00,0x00,0x03,0x03,0x00,0x98,0x01,0xc0,0x0c,0x00,0x66,0x00,0x00,0x03,0x03,0x00,0x98,0x01,0xc0,0x0c,0x00,0x66,0x00,0x00,0x03,0x02,0x00,0xf0,0x00,0x80,0x07,0x00,0x3c,0x00,0x00,0x01,0x06,0x00,0xf0,0x00,0x80,0x07,0x00,0x3c,0x00,0x80,0x01,0x0c,0x00,0x60,0x00,0x00,0x03,0x00,0x18,0x00,0xc0,0x00,0x18,0x00,0xf0,0x00,0x80,0x07,0x00,0x3c,0x00,0x60,0x00,0x30,0x00,0x98,0x01,0xc0,0x0c,0x00,0x66,0x00,0x30,0x00,0x60,0x00,0x0c,0x03,0x60,0x18,0x00,0xc3,0x00,0x18,0x00,0xc0,0xff,0x07,0xfe,0x3f,0xf0,0xff,0x81,0xff,0x0f,0x00,0x00,0xff,0x01,0xf8,0x0f,0xc0,0x7f,0x00,0xfe,0x03,0x00};
float combustion = 0.0;
int range = 0;
int fuel = 0;
int time = 0;
float combustionLPG = 0.0;
float AVGspeed = 0;
int selecteditem = 1;
int menu_arrow_up_x = 14;
int menu_arrow_down_x = -14;
boolean ignition = false;
bool przesunietoElement = false;
unsigned long showLogoTime;
char buffer[32];
void setup(void) {
u8g2.begin();
pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
pinMode(13, OUTPUT);
showLogoTime = millis();
}
void loop(void) {
unsigned long currentTime = millis();
unsigned long elapsedTime = currentTime - showLogoTime;
if(elapsedTime < 5500){
u8g2.clearBuffer();
u8g2.setBitmapMode(1);
u8g2.setFontMode(1);
u8g2.drawXBMP( 23, 17, 82, 27, image_Warstwa_3_bits);
u8g2.sendBuffer();
} else {
int combustionValue = analogRead(A3);
combustion = static_cast<float>(combustionValue) / 1023.0 * 51.0;
if (digitalRead(9) == LOW) {
if (!przesunietoElement) {
selecteditem--;
if (selecteditem > 0 && selecteditem < 3) {
menu_arrow_up_x = menu_arrow_up_x - 43;
} else if (selecteditem == 3) {
menu_arrow_up_x = 100;
menu_arrow_down_x = -14;
} else if (selecteditem > 3 && selecteditem <= 6) {
menu_arrow_down_x = menu_arrow_down_x - 43;
} else if (selecteditem < 1) {
selecteditem = 6;
menu_arrow_up_x = -14;
menu_arrow_down_x = 100;
}
przesunietoElement = true;
}
} else if (digitalRead(10) == LOW) {
if (!przesunietoElement) {
selecteditem++;
if (selecteditem > 0 && selecteditem <= 3) {
menu_arrow_up_x = menu_arrow_up_x + 43;
} else if (selecteditem == 4) {
menu_arrow_up_x = -14;
menu_arrow_down_x = 14;
} else if (selecteditem > 4 && selecteditem <= 6) {
menu_arrow_down_x = menu_arrow_down_x + 43;
} else if (selecteditem > 6) {
selecteditem = 1;
menu_arrow_up_x = 14;
menu_arrow_down_x = -14;
}
przesunietoElement = true;
}
} else if(digitalRead(11) == LOW){
} else {
przesunietoElement = false;
}
u8g2.clearBuffer();
u8g2.setBitmapMode(1);
u8g2.setFontMode(1);
u8g2.drawXBMP( 43, 0, 42, 15, image_Zasi_g_na_paliwie_V_2_bits);
u8g2.drawXBMP( 86, 0, 42, 15, image_Ilo___paliwa_V_2_bits);
u8g2.setFont(u8g2_font_profont22_tr);
dtostrf(combustion, 4, 1, buffer);
u8g2.drawStr(62, 39, buffer);
u8g2.drawXBMP( 0, 49, 42, 15, image_Czas_od_uruchomienia_silnika_V_2_bits);
u8g2.drawXBMP( 43, 49, 42, 15, image_LPG_na_100_km_V_2_bits);
u8g2.drawXBMP( 86, 49, 42, 15, image__rednia_pr_dko___V_2_bits);
u8g2.drawXBMP( 0, 0, 42, 15, image_Spalanie_Chwilowe_V_2_bits);
u8g2.drawXBMP( menu_arrow_up_x, 16, 14, 7, image_Arrow_Up_V_2_bits);
u8g2.drawXBMP( menu_arrow_down_x, 41, 14, 7, image_Arrow_Down_V_2_bits);
u8g2.sendBuffer();
}
}