#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define screen_width 128
#define screen_height 64
#define OLED_RESET 4
#define buzzerPin 13
Adafruit_SSD1306 display(screen_width, screen_height);
int ledBiru = 5;
int ledKuning = 19;
int ledMerah = 18;
#include "DHTesp.h"
const int DHT_PIN = 15;
DHTesp dhtSensor;
void setup() {
Serial.begin(115200);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(ledBiru, OUTPUT);
pinMode(ledKuning, OUTPUT);
pinMode(ledMerah, OUTPUT);
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
if(data.temperature < 29) {
display.setCursor(0, 0);
display.print("SUHU RENDAH");
display.display();
delay(1000);
display.clearDisplay();
Serial.println("suhu rendah");
digitalWrite(ledBiru, HIGH);
digitalWrite(ledMerah, LOW);
digitalWrite(ledKuning, LOW);
} else if (data.temperature >= 29 && data.temperature < 35){
display.setCursor(0, 0);
display.print("SUHU CUKUP");
display.display();
delay(1000);
display.clearDisplay();
Serial.println("Suhu cukup");
digitalWrite(ledBiru, LOW);
digitalWrite(ledKuning, HIGH);
digitalWrite(ledMerah, LOW);
} else if (data.temperature >35) {
display.setCursor(0, 0);
display.print("SUHU TINGGI");
display.display();
delay(1000);
display.clearDisplay();
Serial.println("Suhu Tinggi");
digitalWrite(ledBiru, LOW);
digitalWrite(ledKuning, LOW);
digitalWrite(ledMerah, HIGH);
digitalWrite(buzzerPin, HIGH);
}
}