#include <DHT.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
DHT dht(14,DHT22);
int red = 4;
int blue = 5;
int buzzer = 12;
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
dht.begin();
pinMode(red, OUTPUT);
pinMode(blue, OUTPUT);
if(!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("oled failed"));
while(1);
}
ledcAttachPin(buzzer, 0);
}
void loop() {
float temp = dht.readTemperature();
float hum = dht.readHumidity();
if (temp >= 50) {
digitalWrite(blue, LOW);
digitalWrite(red, HIGH);
delay(500);
digitalWrite(red, LOW);
oled.clearDisplay();
oled.setTextSize(1);
oled.setTextColor(WHITE);
oled.setCursor(0, 2);
oled.print("Suhu: ");
oled.println(temp);
oled.print("Kelembapan: ");
oled.println(hum);
oled.display();
ledcWriteNote(0, NOTE_F, 4);
Serial.println("HOT");
} else {
digitalWrite(red, LOW);
digitalWrite(blue, HIGH);
delay(500);
digitalWrite(blue, LOW);
oled.clearDisplay();
oled.setTextSize(1);
oled.setTextColor(WHITE);
oled.setCursor(0, 2);
oled.print("Suhu: ");
oled.println(temp);
oled.print("Kelembapan: ");
oled.println(hum);
oled.display();
ledcWriteNote(0, NOTE_A, 4);
Serial.println("COLD");
}
}