#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
#define DHTPIN 15
#define DHTTYPE DHT22
#define LED_MERAH 13
#define LED_KUNING 12
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
DHT dht(DHTPIN, DHTTYPE);
const char* nama = "LIDIA SOLA GRATIA BR TARIGAN";
const char* nim = "225150707111006";
float ambangSuhu = 50.0;
float ambangKelembaban = 20.0;
void setup() {
Serial.begin(115200);
dht.begin();
pinMode(LED_MERAH, OUTPUT);
pinMode(LED_KUNING, OUTPUT);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("OLED gagal tersambung"));
for(;;);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println(nama);
display.println(nim);
display.display();
delay(2000);
}
void loop() {
float suhu = dht.readTemperature();
float kelembaban = dht.readHumidity();
if (isnan(suhu) || isnan(kelembaban)) {
Serial.println("Gagal membaca dari sensor DHT!");
return;
}
Serial.print("Suhu: ");
Serial.print(suhu);
Serial.println(" °C");
Serial.print("Kelembaban: ");
Serial.print(kelembaban);
Serial.println(" %");
digitalWrite(LED_MERAH, LOW);
digitalWrite(LED_KUNING, LOW);
bool kondisiSuhu = suhu > ambangSuhu;
bool kondisiKelembaban = kelembaban < ambangKelembaban;
if (kondisiSuhu) {
digitalWrite(LED_MERAH, HIGH);
}
if (kondisiKelembaban) {
digitalWrite(LED_KUNING, HIGH);
}
if (kondisiSuhu && kondisiKelembaban) {
Serial.println("Kedua kondisi terpenuhi! Menampilkan pesan 'Warning!'");
display.clearDisplay();
display.setCursor(0, 0);
display.setTextSize(2);
display.println("Warning!");
display.display();
} else {
Serial.println("Menampilkan Nama dan NIM kembali.");
display.clearDisplay();
display.setCursor(0, 0);
display.setTextSize(1);
display.println(nama);
display.println(nim);
display.display();
}
delay(2000);
}