#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define buttonPin 2
int page = 0;
unsigned long previousMillis = 0;
const long interval = 5000;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.display();
delay(2000);
display.clearDisplay();
}
void loop() {
unsigned long currentMillis = millis();
// Handle Auto Page Switch
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
page++;
if (page > 2) page = 0;
}
// Clear Display Before Drawing
display.clearDisplay();
drawHeader();
// Draw the Current Page
if (page == 0) drawCO2Page();
else if (page == 1) drawTempPage();
else if (page == 2) drawHumidityPage();
drawFooter();
display.display();
}
void drawHeader() {
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
// Date at Top-Left
display.setCursor(0, 0);
display.print("08-03-2025");
// Time at Top-Right
display.setCursor(80, 0);
display.print("10:30");
// AM/PM at the end of Time
display.setCursor(110, 0);
display.print("AM");
// Draw a separator line
display.drawLine(0, 10, 128, 10, SSD1306_WHITE);
}
void drawCO2Page() {
display.setTextSize(2);
display.setCursor(45, 15);
display.print("CO2");
display.setTextSize(1);
display.setCursor(5, 30);
display.print("Sensor 1");
display.setCursor(75, 30);
display.print("Sensor 2");
display.setTextSize(2);
display.setCursor(10,39);
display.print("555");
display.setCursor(80,39);
display.print("666");
// Draw a separator line
display.drawLine(0, 55, 128, 55, SSD1306_WHITE);
}
void drawTempPage() {
display.setTextSize(2);
display.setCursor(10, 15);
display.print("Temp");
display.setTextSize(1);
display.setCursor(5, 30);
display.print("Sensor 1");
display.setCursor(75, 30);
display.print("Sensor 2");
display.setTextSize(2);
display.setCursor(10,39);
display.print("40");
display.setCursor(80,39);
display.print("42");
// Draw a separator line
display.drawLine(0, 55, 128, 55, SSD1306_WHITE);
}
void drawHumidityPage() {
display.setTextSize(2);
display.setCursor(45, 15);
display.print("Hum");
display.setTextSize(1);
display.setCursor(5, 30);
display.print("Sensor 1");
display.setCursor(75, 30);
display.print("Sensor 2");
display.setTextSize(2);
display.setCursor(10,39);
display.print("50");
display.setCursor(80,39);
display.print("55");
// Draw a separator line
display.drawLine(0, 55, 128, 55, SSD1306_WHITE);
}
void drawFooter() {
display.setTextSize(1);
display.setCursor(8, 57);
display.print("IP: 192.168.43.169");
}