#include <Adafruit_SSD1306.h>
#include <DHT.h>
#define DHTTYPE DHT22 // DHT11 / DHT22
const int DHT_PIN = 13; // any GPIO-Pin
DHT dhtSensor(DHT_PIN, DHTTYPE); // create dht-sensor instance
float temperature; // variable to save temperature value
float humidity; // variable to save humidity value
#define OLED_RESET 0 // GPIO0
#define OLED_I2C_ADDR 0x3C // set I2C-address of the OLED-Display (see datasheet)
Adafruit_SSD1306 oledDisplay(OLED_RESET); // create oled-display instance
int minuteCounter = 0; // initialize minute-counter
int secondCounter = 0; // initialize second-counter
void setup() {
// initialize oled-display
oledDisplay.begin(SSD1306_SWITCHCAPVCC, OLED_I2C_ADDR);
// set text settings
oledDisplay.setTextSize(1);
oledDisplay.setTextColor(WHITE);
// DHT setup
pinMode(DHT_PIN, INPUT); // set dht-data-pin as input
dhtSensor.begin(); // initialize dht-sensor
// set baudrate for serial-communication-interface (SPI)
Serial.begin(115200); // wokwi standard baud-rate
// output message over serial-communication-interface
Serial.println("program running ...");
}
void loop() {
oledDisplay.clearDisplay();
// read sensor measurements
temperature = dhtSensor.readTemperature();
humidity = dhtSensor.readHumidity();
oledDisplay.setCursor(0,13);
oledDisplay.println("H: " + String(humidity, 1) + " % " + "T: " + String(temperature, 1) + " C");
oledDisplay.setCursor(0,25);
String secondCounterStr;
if (secondCounter < 10) secondCounterStr = "0";
secondCounterStr += String(secondCounter);
String minuteCounterStr;
if (minuteCounter < 10) minuteCounterStr = "0";
minuteCounterStr += String(minuteCounter);
oledDisplay.println("uptime: " + minuteCounterStr + ":" + secondCounterStr);
oledDisplay.display();
secondCounter = secondCounter + 1;
if (secondCounter == 60) {
secondCounter = 0;
minuteCounter = minuteCounter + 1;
}
delay(1000); // pause for ??? seconds (???.000 milliseconds)
}