#include "U8glib.h"

float soc = 100;
float voltage = 41.90;
float current = -15.20;
float low = 4.16;
float high = 4.23;
int minTemp = 33;
int maxTemp = 35;

U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);

//Main Logo
#include "logo.h"
void DrawLogo(void) {
  u8g.setFont(u8g_font_profont12);
  u8g.setPrintPos(45, 15);
  u8g.print("ES90 Battery");
  u8g.setPrintPos(60, 25);
  u8g.print("Monitor");
  u8g.setPrintPos(55, 35);
  u8g.print("by Hikage");
  u8g.drawXBM( 8, 2, u8g_logo_width, u8g_logo_height, u8g_logo_bits);
}

void Draw(void) {
  //10,11,12,15,17,22,29
  u8g.setFont(u8g_font_profont15);

  u8g.drawStr(10, 30, "Volt: ");
  u8g.setPrintPos(70, 30);  // set position
  u8g.print(voltage);
  u8g.drawStr(105, 30, " V");

  u8g.drawStr(10, 60, "Load: ");
  u8g.setPrintPos(70, 60);
  u8g.print(current);
  u8g.drawStr(115, 60, "A");
}

void Draw2(void) {
  u8g.setFont(u8g_font_profont15);

  u8g.drawStr(10, 15, "Volt: ");
  u8g.setPrintPos(60, 15);  // set position
  u8g.print(voltage);
  u8g.drawStr(95, 15, " V");

  u8g.drawStr(10, 35, "High: ");
  u8g.setPrintPos(65, 35);  // set position
  u8g.print(high);
  u8g.drawStr(95, 35, " V");

  u8g.drawStr(10, 60, "Low: ");
  u8g.setPrintPos(65, 60);  // set position
  u8g.print(low);
  u8g.drawStr(95, 60, " V");
}

void Draw3(void) {
  u8g.setFont(u8g_font_profont15);

  u8g.drawStr(10, 15, "Charge: ");
  u8g.setPrintPos(65, 15);
  u8g.print(soc);
  u8g.drawStr(85, 15, " %");

  u8g.drawStr(10, 35, "Min T: ");
  u8g.setPrintPos(65, 35);
  u8g.print(minTemp);
  u8g.drawStr(85, 35, " C");

  u8g.drawStr(10, 60, "Max T: ");
  u8g.setPrintPos(65, 60);
  u8g.print(maxTemp);
  u8g.drawStr(85, 60, " C");
}

void setup(void) {
  // flip screen, if required
  // u8g.setRot180();
}

void loop(void) {
//Main Logo
  u8g.firstPage();
  do {
    DrawLogo();
  } while (u8g.nextPage());
  delay(3500);

//Voltage, Load
  u8g.firstPage();
  do {
    Draw();
  } while (u8g.nextPage() );
  delay(3500);

//Voltage, High, Low
  u8g.firstPage();
  do {
    Draw2();
  } while (u8g.nextPage());
  delay(3500);

//Charge, Min T, Max T
  u8g.firstPage();
  do {
    Draw3();
  } while (u8g.nextPage());
  delay(3500);
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
ssd1306:DATA
ssd1306:CLK
ssd1306:DC
ssd1306:RST
ssd1306:CS
ssd1306:3V3
ssd1306:VIN
ssd1306:GND