#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "DHTesp.h"
#define LED_B 19
#define LED_K 18
#define LED_M 5
#define TRIG 2
#define buzzerPin 12
#define LEBAR_LAYAR 128 // Lebar layar OLED yang digunakan
#define TINGGI_LAYAR 64 // Tinggi layar OLED yang digunakan
Adafruit_SSD1306 oled(LEBAR_LAYAR, TINGGI_LAYAR, &Wire, -1);
const int DHT_PIN = 15;
DHTesp dhtSensor;
int float SUHU;
void setup()
{
pinMode(LED_B, OUTPUT);
pinMode(LED_K, OUTPUT);
pinMode(LED_M, OUTPUT);
pinMode(TRIG, OUTPUT);
pinMode(buzzerPin, OUTPUT);
digitalWrite(LED_B, LOW);
digitalWrite(LED_K, LOW);
digitalWrite(LED_M, LOW);
Serial.begin(9600);
// initialize OLED display with I2C address 0x3C
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("failed to start SSD1306 OLED"));
while (1);
}
delay(2000);
oled.clearDisplay(); // clear display
oled.setTextSize(1); // Atur ukuran text
oled.setTextColor(WHITE); // Atur warna text
oled.setCursor(0, 10); // Atur posisi text pada display
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
}
void loop()
{
TempAndHumidity SUHU = dhtSensor.getTempAndHumidity();
if(SUHU < 29)
{
digitalWrite(LED_B, HIGH);
digitalWrite(LED_K, LOW);
digitalWrite(LED_M, LOW);
oled.println("SUHU RENDAH");
oled.display();
}
else if(SUHU >= 29 && SUHU <= 35)
{
digitalWrite(LED_B, LOW);
digitalWrite(LED_K, HIGH);
digitalWrite(LED_M, LOW);
oled.println("SUHU CUKUP");
oled.display();
}
else if(SUHU > 35)
{
digitalWrite(LED_B, LOW);
digitalWrite(LED_K, LOW);
digitalWrite(LED_M, HIGH);
oled.println("SUHU PANAS");
oled.display();
tone(buzzerPin, 1500);
noTone(buzzerPin);
delay(1000);
tone(buzzerPin, 500, 1000);
delay(1000);
}
else
{
digitalWrite(LED_B, LOW);
digitalWrite(LED_K, LOW);
digitalWrite(LED_M, LOW);
}
}