#include <Wire.h>
#include <U8g2lib.h>
#include <DHT.h>
#define DHTPIN PA2 // DHT Data pin
#define DHTTYPE DHT22 // Sensor type
DHT dht(DHTPIN, DHTTYPE);
// Correct I2C pins for STM32 Bluepill
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE, PB6, PB7);
void setup() {
Serial.begin(9600);
dht.begin();
Wire.begin();
u8g2.begin();
// Splash screen
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_6x12_tr);
u8g2.drawStr(0, 20, "DHT22 + OLED Test");
u8g2.sendBuffer();
delay(2000);
}
void loop() {
float temp = dht.readTemperature();
float hum = dht.readHumidity();
if (isnan(temp) || isnan(hum)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Temp: ");
Serial.print(temp);
Serial.print(" *C, Humidity: ");
Serial.print(hum);
Serial.println(" %");
// Display on OLED
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_ncenB14_tr);
u8g2.setCursor(0, 20);
u8g2.print("T:");
u8g2.print(temp, 1);
u8g2.print("C");
u8g2.setCursor(0, 50);
u8g2.print("H:");
u8g2.print(hum, 1);
u8g2.print("%");
u8g2.sendBuffer();
delay(2000);
}