#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHT_PIN 2 // Pin DHT22 terhubung ke pin D2
#define POT_PIN A0 // Pin potensiometer terhubung ke pin A0
#define RELAY_PIN 7 // Pin relay terhubung ke pin D7
DHT dht(DHT_PIN, DHT22);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C dapat bervariasi, cek alamat dengan mengeksekusi koding I2C Scanner
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
dht.begin();
pinMode(RELAY_PIN, OUTPUT);
}
void loop() {
// Baca nilai potensiometer untuk mengatur suhu
int potValue = analogRead(POT_PIN);
float targetTemperature = map(potValue, 0, 1023, 20, 50); // Sesuaikan rentang nilai suhu yang diinginkan
// Baca suhu dan kelembapan dari sensor DHT22
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Tampilkan suhu dan kelembapan di Serial Monitor
Serial.print("Suhu: ");
Serial.print(temperature);
Serial.print(" C, Kelembapan: ");
Serial.print(humidity);
Serial.println("%");
// Tampilkan suhu dan kelembapan di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Target: ");
lcd.print(targetTemperature);
lcd.print(" C");
// Kontrol relay berdasarkan perbandingan suhu dan targetTemperature
if (temperature < targetTemperature) {
digitalWrite(RELAY_PIN, HIGH); // Matikan relay jika suhu lebih rendah dari targetTemperature
} else {
digitalWrite(RELAY_PIN, LOW); // Nyalakan relay jika suhu lebih tinggi atau sama dengan targetTemperature
}
delay(1000); // Delay untuk menghindari pembacaan sensor yang terlalu cepat
}