#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>
U8G2_SH1107_128X128_1_HW_I2C u8g2(U8G2_R0);
// Placeholder data variables
float temperature = 25.5; // Placeholder temperature value (in °C)
float humidity = 50.0; // Placeholder humidity value (in %)
float pressure = 1013.2; // Placeholder pressure value (in hPa)
int pm25 = 10; // Placeholder PM2.5 value (in µg/m³)
int voc = 150; // Placeholder VOC value (in ppb)
int co2 = 400; // Placeholder CO2 value (in ppm)
int batteryLevel = 75; // Placeholder battery level (in %)
bool bluetoothConnected = true; // Placeholder Bluetooth connection status
// Bluetooth logo bitmaps
static const unsigned char image_Ble_disconnected_15x15_bits[] PROGMEM = {
0xE0,0x03,0x18,0x0C,0x84,0x10,0x82,0x21,0x92,0x22,0xA1,0x44,0xC1,0x42,0x81,0x41,
0xC1,0x42,0xA1,0x44,0x92,0x02,0x82,0x21,0x84,0x10,0x18,0x0C,0xE0,0x03
};
static const unsigned char image_Ble_connected_15x15_bits[] PROGMEM = {
0xE0,0x03,0xF8,0x0F,0x7C,0x1F,0x7E,0x3E,0x6E,0x3D,0x5F,0x7B,0x3F,0x7D,0x7F,0x7E,
0x3F,0x7D,0x5F,0x7B,0x6e,0x3d,0x7e,0x3e,0x7c,0x1f,0xf8,0x0f,0xe0,0x03
};
void setup() {
u8g2.begin();
u8g2.setContrast(255);
}
void draw_interface() {
// Draw "Air Quality Monitor" in the top middle part of the screen
u8g2.setFont(u8g2_font_haxrcorp4089_tr);
u8g2.drawStr(25, 15, "Air Quality Monitor");
// Draw Bluetooth Logo
u8g2.setBitmapMode(1);
if (bluetoothConnected) {
u8g2.drawXBMP(0, 0, 15, 15, image_Ble_connected_15x15_bits);
} else {
u8g2.drawXBMP(0, 0, 15, 15, image_Ble_disconnected_15x15_bits);
}
// Draw Battery Level
u8g2.drawRFrame(110, 4, 14, 10, 2); // Battery outline
int batteryWidth = map(batteryLevel, 0, 100, 0, 10);
u8g2.drawBox(112, 6, batteryWidth, 6); // Battery level indicator
u8g2.setFont(u8g2_font_haxrcorp4089_tr);
u8g2.drawStr(10, 43, "Temperature:");
u8g2.drawStr(10, 55, "Humidity:");
u8g2.drawStr(10, 67, "Pressure:");
u8g2.drawStr(10, 79, "PM2.5:");
u8g2.drawStr(10, 91, "VOC:");
u8g2.drawStr(10, 103, "CO2:");
u8g2.setFont(u8g2_font_8x13_mf);
u8g2.setCursor(70, 43);
u8g2.print(temperature, 1); // Display temperature with one decimal place
u8g2.setCursor(70, 55);
u8g2.print(humidity, 1); // Display humidity with one decimal place
u8g2.setCursor(70, 67);
u8g2.print(pressure, 1); // Display pressure with one decimal place
u8g2.setCursor(70, 79);
u8g2.print(pm25);
u8g2.setCursor(70, 91);
u8g2.print(voc);
u8g2.setCursor(70, 103);
u8g2.print(co2);
}
void loop() {
u8g2.firstPage();
do {
draw_interface();
} while (u8g2.nextPage());
}