#include <DHTesp.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define WIDTH 128
#define HEIGHT 64
Adafruit_SSD1306 oled(WIDTH, HEIGHT, &Wire, -1);
const int DHT_PIN = 15;
DHTesp dhtSensor;
void setup() {
Serial.begin(9600);
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("gagal untuk memulai OLED"));
while (true);
}
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
}
void loop() {
delay(2000);
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float temp = data.temperature;
float hum = data.humidity;
if (isnan(hum) || isnan(temp)) {
oled.clearDisplay();
oled.setTextSize(1); oled.setTextColor(WHITE);
oled.setCursor(0, 10);
oled.println("Pembacaan sensor");
oled.println();
oled.print("DHT gagal!");
oled.display();
Serial.println(F("Pembacaan sensor DHT gagal!"));
return;
}
oled.clearDisplay();
oled.setTextSize(1); oled.setTextColor(WHITE);
oled.setCursor(0, 10);
oled.print("Hum.: ");
oled.print(hum);
oled.print("%");
if (hum < 20) {
oled.print(" !!!!!");
}
oled.println(); oled.println();
oled.print("Temp: ");
oled.print(temp);
oled.print("C");
if (temp > 30) {
oled.print(" !!!!!");
}
oled.display();
Serial.print("Kelembapan: ");
Serial.print(hum);
Serial.print("% \tSuhu: ");
Serial.print(temp);
Serial.print("℃");
Serial.println();
}