#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHTesp.h>
#define pinDHT 15
DHTesp dhtSensor;
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET 4
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
Serial.begin(115200);
dhtSensor.setup(pinDHT, DHTesp::DHT22);
// Memeriksa OLED display
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
display.display();
delay(2000);
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
}
void loop() {
delay(2000);
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.println("Suhu: " + String(temp, 2) + "°C");
Serial.println("Kelembaban: " + String(hum, 1) + "%");
Serial.println("---------------");
//delay(3000); // Menunggu pembacaan sensor DHT22
// Kosongkan Display
display.clearDisplay();
// Mengatur ukuran text
display.setTextSize(1.7);
// Menetapkan Warna tulisan
display.setTextColor(SSD1306_WHITE);
// Menetapkan posisi string pada baris 1
display.setCursor(0, 0);
// Menampilkan String baris 1
display.println("Suhu: " +String(temp, 2) + " C");
// Menetapkan posisi string pada baris 2
display.setCursor(0, 15);
// Menampilkan String baris 2
display.println("Kelembaban: " +String(hum, 1) + " %");
display.display(); // Menampilkan String & data pada Display OLED
}