#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define TINGGI_LAYAR 64 // Tinggi layar display yang digunakan
#define LEBAR_LAYAR 128 // Lebar layar display yang digunakan
#include "DHTesp.h"
#define DHTPIN 15
DHTesp dht;
float suhu;
// float hum;
// LED RGB
int pinC = 23; // warna Cyan
int pinM = 19; // warna Magenta
int pinY = 18; // warna Yellow
int BuzzerPeringatan = 2;
Adafruit_SSD1306 display(LEBAR_LAYAR, TINGGI_LAYAR, &Wire, -1);
void setup()
{
pinMode(pinC, OUTPUT);
pinMode(pinM, OUTPUT);
pinMode(pinY, OUTPUT);
pinMode(BuzzerPeringatan, OUTPUT);
Serial.begin(115200); // serial begin untuk esp32
dht.setup(DHTPIN, DHTesp::DHT22);
// initialize display display with I2C address 0x3C
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("failed to start SSD1306 display"));
while (1);
}
display.clearDisplay();
display.setTextSize(1); // Atur ukuran text
display.setTextColor(WHITE); // Atur warna text
display.setCursor(20, 20); // Atur posisi text pada display
display.println("SELAMAT DATANG"); // Text yang dicetak
display.display();
delay(2000);
display.clearDisplay();// menampilkan display display
}
void loop()
{
TempAndHumidity data = dht.getTempAndHumidity();
float temp = data.temperature;
// float hum = data.humidity;
Serial.print("Suhu: " + String(temp, 2) + "'C");
// Serial.println("Kelembapan: " + String(hum, 1) + "%");
Serial.print(" \t");
delay(500);
if(temp < 29)
{
// Green ---> kombinasi warna Cyan + Yellow
digitalWrite(pinC,HIGH);
digitalWrite(pinM,LOW);
digitalWrite(pinY,HIGH);
Serial.println("SUHU RENDAH");
Serial.print(" \n");
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,10);
display.print("SUHU RENDAH "); //Tampilan OLED
display.display();
display.clearDisplay();
}
else if (temp >= 29, temp <= 35)
{
// Yellow
digitalWrite(pinC,LOW);
digitalWrite(pinM,LOW);
digitalWrite(pinY,HIGH);
Serial.println("SUHU CUKUP");
Serial.print(" \n");
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,10);
display.print("SUHU CUKUP "); //Tampilan LCD
display.display();
display.clearDisplay();
}
else if (temp > 35)
{
// Red ---> kombinasi warna Magenta + Yellow
digitalWrite(pinC,LOW);
digitalWrite(pinM,HIGH);
digitalWrite(pinY,HIGH);
digitalWrite(BuzzerPeringatan, HIGH);
Serial.println("SUHU PANAS");
Serial.print(" \n");
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,10);
display.print("SUHU PANAS "); //Tampilan LCD
display.display();
display.clearDisplay();
}
delay(1000);
}