#include <Arduino.h>
#include <U8g2lib.h>
#include <SPI.h>
#include <Wire.h>
//U8G2_ST7920_128X64_1_SW_SPI u8g2(U8G2_R0, 13, 11, 10, 8);
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0);
#define u8g_logo_width 38
#define u8g_logo_height 24
static unsigned char u8g_logo_bits[] = {
0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0xe0,
0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f };
int nAnalogInput0 = 0;
int nAnalogInput1 = 0;
int nAnalogInput2 = 0;
int nAnalogInput3 = 0;
int nXposition0 = 2;
int nYposition0 = 2;
int nXsize0 = 64;
int nYsize0 = 11;
float fR1 = 6700;
float fR2 = 330;
int nCounter = 0;
int nTime1 = 3;
int nTime2 = 6;
int nTime3 = 9;
int nTime4 = 12;
char sLoadingString = "test1";
char sbuffer[32];
float fBatteryVoltage;
int nMaxAnalogInputValue = 1023;
int nMaxAnalogInputVoltage = 5;
int nNormalBatteryVoltage = 12;
//int nBatteryBarUpperLimit = 2 * nMaxAnalogInputValue * nMaxAnalogInputVoltage / (nNormalBatteryVoltage * fR2 /(fR1 + fR2));
int nBatteryBarUpperLimit = 2 * nMaxAnalogInputValue / (nMaxAnalogInputVoltage * (nNormalBatteryVoltage * (fR2/(fR1 + fR2))));
void setup(void) {
u8g2.begin();
nCounter = 0;
sLoadingString = "test1";
}
void loop(void) {
nAnalogInput0 = analogRead(A0);
nAnalogInput1 = analogRead(A1);
fBatteryVoltage = nAnalogInput0 * (5.0/1023) * ((fR1 + fR2)/fR2); //voltage divider
//fVoltage2 = nAnalogInput0 * (5.0/1023);
// nAnalogInput1 = analogRead(A1);
nAnalogInput2 = analogRead(A2);
nAnalogInput3 = analogRead(A3);
if (nCounter == nTime4) {
//sLoadingString = '/';
nCounter = 0;
}
u8g2.firstPage();
do {
//u8g2.drawStr(2,48,"Hello World! *C");
u8g2.setFont(u8g2_font_likeminecraft_te);
u8g2.drawFrame(0, 0, 128, 64);
u8g2.drawFrame(nXposition0, nYposition0, nXsize0, nYsize0);
u8g2.drawBox(nXposition0+2, nYposition0+2, map(nAnalogInput0, 0, nBatteryBarUpperLimit, 0, nXsize0-4), nYsize0-4); //Berekenen wat nAnalogInput0 moet zijn 12 //1023 moet aangepast worden dit is de upper limit van de input // 1023/V2/5V //V2 = R2/(R1 + R2) * Vin
u8g2.setCursor(70, 12);
u8g2.print(fBatteryVoltage);
u8g2.drawStr(98, 12, "V");
//u8g2.drawStr(90, 10, "*C");
u8g2.drawFrame(nXposition0, nYposition0+nYsize0+1, nXsize0, nYsize0);
u8g2.drawBox(nXposition0+2, nYposition0+nYsize0+3, map(nAnalogInput1, 0, 1023, 0, nXsize0-4), nYsize0-4);
u8g2.setCursor(70, 24);
u8g2.print(fBatteryVoltage);
u8g2.drawStr(94, 24, "*C");
u8g2.drawFrame(nXposition0, nYposition0+2*nYsize0+2, nXsize0, nYsize0);
u8g2.drawBox(nXposition0+2, nYposition0+2*nYsize0+4, map(nAnalogInput2, 0, 1023, 0, nXsize0-4), nYsize0-4);
u8g2.setCursor(70, 36);
u8g2.print(fBatteryVoltage);
u8g2.drawStr(100, 36, "bar");
u8g2.drawFrame(nXposition0, nYposition0+3*nYsize0+3, nXsize0, nYsize0);
u8g2.drawBox(nXposition0+2, nYposition0+3*nYsize0+5, map(nAnalogInput3, 0, 1023, 0, nXsize0-4), nYsize0-4);
u8g2.setCursor(70, 48);
u8g2.print(fBatteryVoltage);
u8g2.drawStr(104, 48, "km/h");
u8g2.setCursor(30, 60);
//u8g2.print(sLoadingString);
u8g2.drawUTF8(5, 20, sLoadingString);
//u8g2.drawStr(12, 60, "/");
if ((nCounter <= nTime1) && (nCounter >= 0)) {
//u8g2.drawStr(12, 60, ".");
u8g2.setCursor(12, 60);
u8g2.print(sLoadingString);
}
else if ((nCounter >= nTime1) && (nCounter >= nTime2)) {
u8g2.drawStr(12, 60, "..");
}
else if ((nCounter >= (nTime2)) && (nCounter >= (nTime3))) {
u8g2.drawStr(12, 60, "...");
}
else if ((nCounter >= (nTime3)) && (nCounter >= (nTime4))) {
u8g2.drawStr(12, 60, "....");
//nCounter = 0;
}
//nCounter = nCounter++;
//u8g2.drawXBM( 0, 32, u8g_logo_width, u8g_logo_height, u8g_logo_bits);
//u8g2.drawFrame(3,7,25,15);
//u8g2.drawBox(5, 9, map(nAnalogInput2, 0, 1023, 0, 21), 11);
//u8g2.drawFrame(3,7,25,15);
//u8g2.drawBox(5, 9, map(nAnalogInput3, 0, 1023, 0, 21), 11);
} while ( u8g2.nextPage() );
nCounter = nCounter+1;
}