#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "DHTesp.h"
const int DHT_PIN = 1;
DHTesp dhtSensor;
#define SCREEN_WIDTH 128 // OLED display sirka, v bodech
#define SCREEN_HEIGHT 64 // OLED display vyska, v bodech
// Nastaveni parametru pro displej SSD1306 pripojeny pres I2C (SDA, SCL piny)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("failed to start SSD1306 OLED"));
for (;;);
}
display.clearDisplay();
display.setTextColor(WHITE);
}
void loop() {
delay(5000); //opakuj mereni po 5 sekundach
//cti teplotu a vlhkost z DHT22
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float t = data.temperature;
float h = data.humidity;
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
Serial.println("---");
delay(1000);
// vymaz displej
display.clearDisplay();
// zobraz teplotu
display.setTextSize(1); // nastav velikost pisma
display.setCursor(0, 0); // zacni psat od pozice 0,0
display.print("Teplota: "); // vypis text
display.setTextSize(2);
display.setCursor(55, 0);
display.print(t, 1); // vypis obsah promenne t, jedno desetinne misto
display.setTextSize(1);
display.print(" ");
display.cp437(true);
display.write(167);
display.setTextSize(2);
display.print("C");
// zobraz vlhkost
display.setTextSize(1);
display.setCursor(0, 23);
display.print("Vlhkost: ");
display.setTextSize(2);
display.setCursor(55, 23);
display.print(h, 1);
display.print(" %");
display.display();
}