#include <DHTesp.h> // Library untuk sensor DHT
#include <Wire.h> // Library untuk komunikasi I2C
#include <Adafruit_GFX.h> // Library untuk grafis OLED
#include <Adafruit_SSD1306.h> // Library untuk display OLED
#define pinDHT 27 // Pin dimana sensor DHT terhubung
#define SCREEN_WIDTH 128 // Lebar display OLED dalam pixel
#define SCREEN_HEIGHT 64 // Tinggi display OLED dalam pixel
DHTesp dht; // Objek untuk sensor DHT
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // Objek untuk OLED
void setup() {
Serial.begin(9600); // Mulai komunikasi serial
dht.setup(pinDHT, DHTesp::DHT22); // Inisialisasi sensor DHT22
// Inisialisasi OLED dengan alamat I2C = 0x3C
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("failed to start SSD1306 OLED"));
while (true); // Berhenti jika OLED gagal diinisialisasi
}
delay(2000); // Delay 2 detik untuk inisialisasi
oled.clearDisplay(); // Bersihkan layar OLED
oled.setTextSize(1); // Atur ukuran teks
oled.setTextColor(WHITE); // Atur warna teks
oled.setCursor(0, 10); // Atur posisi teks
oled.println("Monitoring Suhu"); // Tampilkan pesan awal
oled.setCursor(0, 30); // Atur posisi teks
oled.println("dan Kelembapan"); // Tampilkan pesan awal
oled.display(); // Tampilkan di OLED
delay(2000); // Tunda sebentar sebelum mulai membaca data
}
void loop() {
TempAndHumidity data = dht.getTempAndHumidity(); // Baca data dari sensor DHT22
oled.clearDisplay(); // Bersihkan layar sebelum menampilkan data baru
// Peringatan jika suhu lebih dari 30°C
if (data.temperature > 30) {
oled.setCursor(0, 0); // Set posisi teks untuk peringatan
oled.println("PERINGATAN!"); // Tampilkan peringatan
oled.setCursor(0, 10); // Set posisi teks
oled.println("Suhu Tinggi"); // Tampilkan pesan suhu tinggi
}
// Peringatan jika kelembapan di bawah 20%
if (data.humidity < 20) {
oled.setCursor(0, 20); // Set posisi teks untuk peringatan
oled.println("PERINGATAN!"); // Tampilkan peringatan
oled.setCursor(0, 30); // Set posisi teks
oled.println("Kelembapan Rendah"); // Tampilkan pesan kelembapan rendah
}
oled.display(); // Tampilkan semua teks di OLED
delay(2000); // Tunggu 2 detik sebelum membaca data lagi
}