#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
// Konfigurasi DHT22
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Konfigurasi Sensor Kelembaban Tanah
#define SOIL_MOISTURE_PIN 34
// Konfigurasi Relay
#define RELAY1_PIN 26
#define RELAY2_PIN 27
// Pastikan alamat I2C benar setelah scanning
LiquidCrystal_I2C lcd(0x27, 16, 2); // Ganti 0x27 dengan alamat I2C yang ditemukan
// Variabel global
int soilMoistureValue = 0;
float temperature = 0;
float humidity = 0;
void setup() {
// Inisialisasi Serial Monitor
Serial.begin(115200);
// Inisialisasi I2C
Wire.begin();
// Inisialisasi LCD
lcd.init();
lcd.backlight();
// Inisialisasi DHT22
dht.begin();
// Inisialisasi Relay
pinMode(RELAY1_PIN, OUTPUT);
pinMode(RELAY2_PIN, OUTPUT);
digitalWrite(RELAY1_PIN, HIGH); // Matikan pompa 1
digitalWrite(RELAY2_PIN, HIGH); // Matikan pompa 2
}
void loop() {
// Membaca data dari sensor DHT22
temperature = dht.readTemperature();
humidity = dht.readHumidity();
// Membaca data dari sensor kelembaban tanah
soilMoistureValue = analogRead(SOIL_MOISTURE_PIN);
// Tampilkan data pada LCD
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Hum: ");
lcd.print(humidity);
lcd.print("%");
// Logika kontrol relay berdasarkan data sensor
if (soilMoistureValue < 300) {
digitalWrite(RELAY1_PIN, LOW); // Hidupkan pompa 1
} else {
digitalWrite(RELAY1_PIN, HIGH); // Matikan pompa 1
}
if (humidity < 50) {
digitalWrite(RELAY2_PIN, HIGH); // Hidupkan pompa 2
} else {
digitalWrite(RELAY2_PIN, LOW); // Matikan pompa 2
}
delay(2000); // Tunggu 2 detik sebelum pembacaan berikutnya
}