#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHTesp.h>
#define led_merah 5
#define led_kuning 4
#define led_biru 2
#define buzzer 18
#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;
void setup()
{
Serial.begin(9600);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
// 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.display(); //menampilkan display OLED
}
void loop()
{
pinMode(led_merah, OUTPUT);
pinMode(led_kuning, OUTPUT);
pinMode(led_biru, OUTPUT);
pinMode(buzzer, OUTPUT);
float suhu = dhtSensor.getTemperature(); //ambil nilai suhu dlm bentuk float
float lembab = dhtSensor.getHumidity(); //ambil nilai kelembaban dlm bentuk float
//TempAndHumidity data = dhtSensor.getTempAndHumidity();
//Serial.println("Suhu: " + String(data.temperature, 2) + "°C"); //merubah nilai suhu ke string
//Serial.println("Kelembaban: " + String(data.humidity, 1) + "%"); //merubah nilai kelembaban ke string
//String suhu = String(data.temperature, 2); atau String suhu = String(dhtSensor.getTemperature(), 2);
//String lembab = String(data.humidity, 2); atau String lembab = String(dhtSensor.getHumidity(), 2);
Serial.print("Suhunya = ");
Serial.println(suhu);
Serial.print("Kelembabannya = ");
Serial.println(lembab);
delay(1000);
oled.clearDisplay(); //clear display
oled.setCursor(0, 5); //Atur posisi text pada display
oled.print("Suhu: "); //cetak text ke oled
oled.print(suhu); //cetak nilai suhu
oled.print(" °C"); //cetak text ke oled
if(suhu < 29)
{
digitalWrite(led_biru, HIGH);
digitalWrite(led_merah, LOW);
digitalWrite(led_kuning, LOW);
oled.setCursor(0,25);
oled.println("SUHU RENDAH"); //cetak text ke oled
oled.display(); //menampilkan display OLED
}
else if(suhu < 35)
{
digitalWrite(led_kuning, HIGH);
digitalWrite(led_merah, LOW);
digitalWrite(led_biru, LOW);
oled.setCursor(0,25);
oled.println("SUHU CUKUP"); //cetak text ke oled
oled.display(); //menampilkan display OLED
}
else
{
digitalWrite(led_merah, HIGH);
digitalWrite(led_kuning, LOW);
digitalWrite(led_biru, LOW);
oled.setCursor(0,25);
oled.println("SUHU PANAS"); //cetak text ke oled
oled.display(); //menampilkan display OLED
tone(buzzer, 800, 300); //bunyi buzzer
delay(500);
tone(buzzer, 800, 300); //ulangi bunyi buzzer
delay(500);
}
}