#include <DHTesp.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
#define pinDHT 26
DHTesp dhtSensor;
void setup() {
Serial.begin(115200);
dhtSensor.setup(pinDHT, DHTesp::DHT22);
pinMode(18, OUTPUT);
pinMode(4, OUTPUT);
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("Failed to start SSD1306 OLED"));
while (true);
}
oled.clearDisplay();
oled.setTextSize(1);
oled.setTextColor(WHITE);
Serial.println("Hello, ESP32!");
}
void loop() {
delay(1000);
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float temp = data.temperature;
float hum = data.humidity;
if (isnan(hum) || isnan(temp)) {
Serial.println(F("Pembacaan sensor DHT tidak berhasil"));
return;
}
Serial.print("Kelembaban: ");
Serial.println(hum);
Serial.print("Suhu: ");
Serial.println(temp);
oled.clearDisplay();
if (temp > 30) {
oled.setCursor(0, 5);
oled.print("WARNING!");
oled.setCursor(0, 20);
oled.println("SUHU TINGGI!");
oled.display();
}
if (hum < 20) {
oled.setCursor(0, 35);
oled.print("WARNING!");
oled.setCursor(0, 50);
oled.println("KELEMBABAN RENDAH!");
oled.display();
}
if (temp > 20) {
digitalWrite(18, HIGH);
} else {
digitalWrite(18, LOW);
}
if (hum > 30) {
digitalWrite(4, HIGH);
} else {
digitalWrite(4, LOW);
}
// oled.setCursor(0, 0);
// oled.print("TEMP: ");
// oled.print(temp);
// oled.print(" C");
// oled.setCursor(0, 10);
// oled.print("HUM: ");
// oled.print(hum);
// oled.print(" %");
oled.display();
}