#include <U8g2lib.h>
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/U8X8_PIN_NONE);
//U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/U8X8_PIN_NONE);
void setup() {
Serial.begin(9600);
u8g2.begin();
u8g2.setContrast(50);
u8g2.setFlipMode(2);
}
void loop() {
float sensor_val = analogRead(A0) * 1.66;
static char strf[20];
static char date[11], time[9], logs[3];
snprintf(date, 11, "%02u-%02u-%04u", 5, 8, 2025);
snprintf(time, 9, "%02u:%02u:%02u", 10, 42, 15);
snprintf(logs, 3, "%02u", 42);
dtostrf(sensor_val, 0, 2, strf);
u8g2.setFont(u8g2_font_t0_22b_mf);
Serial.println((128 - u8g2.getUTF8Width(date)) / 2.0, 2);
Serial.println((128 - u8g2.getUTF8Width(time)) / 2.0, 2);
Serial.println((128 - u8g2.getUTF8Width(logs)) / 2.0, 2);
Serial.println((128 - u8g2.getUTF8Width("datalog")) / 2.0, 2);
Serial.println((128 - u8g2.getUTF8Width("PH")) / 2.0, 2);
Serial.println((128 - u8g2.getUTF8Width("Temperature")) / 2.0, 2);
Serial.println((128 - u8g2.getUTF8Width("TDS")) / 2.0, 2);
Serial.println((128 - u8g2.getUTF8Width("ppm")) / 2.0, 2);
Serial.println((128 - u8g2.getUTF8Width("Turbidity")) / 2.0, 2);
Serial.println((128 - u8g2.getUTF8Width("NTU")) / 2.0, 2);
Serial.println((128 - u8g2.getUTF8Width("datalog OK")) / 2.0, 2);
Serial.println((128 - u8g2.getUTF8Width("datalog ER")) / 2.0, 2);
Serial.println((128 - u8g2.getUTF8Width(strf)) / 2.0, 2);
Serial.println();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 0, 128, 64, 5);
u8g2.setFont(u8g2_font_t0_22b_mf);
u8g2.drawStr(9, 18, date);
u8g2.drawStr(20, 38, time);
u8g2.drawStr((128 - u8g2.getUTF8Width(strf)) / 2, 58, strf);
u8g2.sendBuffer();
delay(300);
}