#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#define DHTPIN 4 // Pin data sensor DHT22 terhubung ke pin 4 pada ESP32
#define DHTTYPE DHT22 // Jenis sensor yang digunakan (DHT22)
#define relayPin 5 // Pin relay terhubung ke pin 5 pada ESP32
#define potPin 12 // Pin potensiometer terhubung ke pin A0 pada ESP32
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C dan ukuran LCD (disesuaikan jika diperlukan)
DHT dht(DHTPIN, DHTTYPE);
float suhuAmbang; // Ambang suhu dari potensiometer
void setup() {
Serial.begin(115200);
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, LOW); // Matikan relay saat boot
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Aktifkan backlight LCD
lcd.setCursor(0, 0);
lcd.print("Suhu : "); // Tampilkan teks awal untuk ambang suhu
}
void loop() {
float temperature = dht.readTemperature(); // Membaca suhu dari sensor
if (isnan(temperature)) {
Serial.println("START");
lcd.setCursor(0, 1);
lcd.print("Automatic AC");
delay(2000);
return;
}
int potValue = analogRead(potPin); // Baca nilai potensiometer
suhuAmbang = map(potValue, 0, 1023, 20, 40); // Sesuaikan rentang nilai potensiometer dan suhu ambang
Serial.print("Suhu saat ini: ");
Serial.println(temperature);
lcd.setCursor(7, 0); // Atur kursor ke posisi yang sesuai untuk menampilkan ambang suhu
lcd.print(" "); // Hapus nilai ambang suhu sebelumnya
lcd.setCursor(7, 0);
lcd.print(suhuAmbang); // Tampilkan nilai ambang suhu
lcd.print(" C ");
if (temperature > suhuAmbang) {
digitalWrite(relayPin, HIGH);
lcd.setCursor(0, 1);
lcd.print("AC ON ");
} else {
digitalWrite(relayPin, LOW);
lcd.setCursor(0, 1);
lcd.print("AC OFF ");
}
Serial.print("Temperature : ");
Serial.println(suhuAmbang);
delay(2000);
}