#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0 | U8G_I2C_OPT_NO_ACK | U8G_I2C_OPT_FAST); // Fast I2C / TWI
const int maxProgressResetDelai = 2000;
int progress = 0;
int maxProgress = 205;
int resetDelai = maxProgressResetDelai;
bool isMaxReset = true;
void setup() {
u8g.setFont(u8g_font_tpssb);
u8g.setColorIndex(1);
pinMode(A0, INPUT);
}
void loop() {
u8g.firstPage();
do {
if (progress > maxProgress && progress > 205 ) {
maxProgress = progress;
} else if (progress < 205 && isMaxReset == true ) {
isMaxReset = false;
}
if (inBoost() && isMaxReset == false) {
isMaxReset = true;
maxProgress = 205;
}
u8g.setPrintPos(0,45);
u8g.print(pressureFromVoltage(progress));
u8g.drawStr(30, 45, "PSI");
// u8g.setPrintPos(80,45);
// u8g.print(progress);
u8g.setPrintPos(0, 60 );
u8g.print(pressureFromVoltage(maxProgress));
u8g.drawStr(30, 60, "Max PSI");
// u8g.setPrintPos(80, 60 );
// u8g.print(maxProgress);
u8g.drawFrame(0, 10, 127, 20);
if (inBoost()) {
u8g.drawBox(30, 15, map(progress,205,1023,0,94), 10);
} else {
u8g.drawBox(map(progress,205,0,30,3),15, map(progress,205,0,3,30),10);
}
} while ( u8g.nextPage() );
progress = analogRead(A0);
}
float voltage() {
return progress * (5 /1023.0);
}
bool inBoost() {
return progress > 205;
}
long pressureFromVoltage(int value) {
long pressure = 0;
if (value >= 205) {
pressure = map(value, 205, 1023,0,51);
} else {
pressure = map(value,205,0,0,-15);
}
return pressure;
}