#include "U8glib.h"  // OLED library
#include "DHT.h"     // DHT sensor library

#define DHTPIN 2       // Pin connected to DHT22
#define DHTTYPE DHT22  // DHT22 sensor type

// Initialize DHT sensor
DHT dht(DHTPIN, DHTTYPE);

// Initialize OLED
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);

float temperature = 0.0;
float humidity = 0.0;

void setup() {
  dht.begin();                 // Start DHT sensor
  u8g.setFont(u8g_font_6x10);  // Set smaller font
}

void loop() {
  // Read temperature and humidity
  float temp = dht.readTemperature();
  float hum = dht.readHumidity();

  // Check if readings are valid
  if (isnan(temp) || isnan(hum)) {
    temperature = 0.0;
    humidity = 0.0;
  } else {
    temperature = temp;
    humidity = hum;
  }

  // Display data on OLED
  u8g.firstPage();
  do {
    // Title
    u8g.drawStr(8, 10, "Temp & Humidity");

    // Display Temperature
    u8g.drawStr(5, 30, "Temp:");
    u8g.drawFrame(50, 20, 70, 10);
    // Map temp (-40 to 80°C) to bar width (0 to 70)
    u8g.drawBox(40, 20, map(temperature, -40, 80, 0, 70), 10);
    u8g.setPrintPos(125, 30);
    u8g.print(temperature, 1);
    u8g.print("C");

    // Display Humidity
    u8g.drawStr(5, 50, "Humid:");
    u8g.drawFrame(50, 40, 70, 10);
    // Map humidity (0 to 100%) to bar width (0 to 70)
    u8g.drawBox(50, 40, map(humidity, 0, 100, 0, 70), 10);
    u8g.setPrintPos(125, 50);
    u8g.print(humidity, 1);
    u8g.print("%");
  } while (u8g.nextPage());

  delay(1000);  // Wait 1 second before refreshing
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
ssd1306:GND
ssd1306:VCC
ssd1306:SCL
ssd1306:SDA
dht1:VCC
dht1:SDA
dht1:NC
dht1:GND