#include "DHTesp.h"
const int DHT_PIN = 15; // Pin sensor DHT22
const int LED1_PIN = 2; // Pin LED1 (suhu)
const int LED2_PIN = 4; // Pin LED2 (kelembaban)
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
DHTesp dhtSensor;
#define SCREEN_WIDTH 128 // lebar display OLED dalam pixel
#define SCREEN_HEIGHT 64 // tinggi display OLED dalam pixel
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(115200); // memulai koneksi serial
// inisialisasi display OLED dengan alamat I2C = 0x3C
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("failed to start SSD1306 OLED"));
while (true);
}
delay(2000); // delay 2s untuk inisialisasi
oled.clearDisplay(); // clear display
oled.setTextSize(1); // mengatur ukuran text
oled.setTextColor(WHITE); // mengatur warna text
oled.setCursor(0, 10); // mengatur posisi text pada display
oled.println("DIONISIUS ARITO"); // text yang akan ditampilkan
oled.setCursor(0, 30); // mengatur posisi text pada display
oled.println("225150701111032"); // text yang akan ditampilkan
oled.display(); // menampilkan text pada display
oled.clearDisplay(); // clear display
// Setup sensor DHT22
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
// Setup LED1 dan LED2 sebagai output
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
Serial.println("--- Mulai Pengukuran ---");
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
// Tampilkan data suhu dan kelembaban
Serial.println("Suhu = " + String(data.temperature, 1) + "°C");
Serial.println("Kelembaban = " + String(data.humidity, 1) + "%");
Serial.println();
// Kontrol LED1 berdasarkan suhu
if (data.temperature > 50) {
digitalWrite(LED1_PIN, HIGH); // LED 1 Menyala
oled.clearDisplay(); // clear display
delay(2000); // delay 2s
// oled.println("TEMPERTUR DIATAS 30 DERAJAT"); // text yang akan ditampilkan
// oled.setCursor(0, 30); // mengatur posisi text pada display
// oled.display(); // menampilkan text pada display
} else {
digitalWrite(LED1_PIN, LOW); // LED 1 Mati
}
// Kontrol LED2 berdasarkan kelembaban
if (data.humidity < 20) {
digitalWrite(LED2_PIN, HIGH); // LED 2 Menyala
oled.clearDisplay(); // clear display
delay(2000); // delay 2s
// oled.println("HUMIDITY DIBAWAH 20%"); // text yang akan ditampilkan
// oled.setCursor(0, 30); // mengatur posisi text pada display
// oled.display(); // menampilkan text pada display
} else {
digitalWrite(LED2_PIN, LOW); // LED 2 Mati
}
if(data.temperature > 50 && data.humidity < 20){
digitalWrite(LED1_PIN, HIGH); // LED 1 Menyala
digitalWrite(LED2_PIN, HIGH); // LED 2 Menyala
oled.clearDisplay(); // clear display
delay(2000);
oled.println("WARNING!"); // text yang akan ditampilkan
oled.setCursor(0, 10); // mengatur posisi text pada display
oled.setTextSize(2); // mengatur ukuran text lebih besar
oled.display(); // menampilkan text pada display
delay(3000);
oled.clearDisplay(); // clear display
oled.display(); // menampilkan text pada display
} else {
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
}
delay(3000); // Waktu proses input
}