#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define PH_SENSOR_PIN A0 // Pin tempat sensor pH terhubung
#define MOISTURE_SENSOR_PIN A1 // Pin tempat sensor kelembaban tanah terhubung
#define RELAY_WATER_PUMP 2 // Pin relay untuk pompa air
#define MOISTURE_THRESHOLD 600 // Ambang batas untuk kelembaban tanah (sesuaikan sesuai kebutuhan)
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C untuk LCD
void setup() {
Serial.begin(9600);
// Inisialisasi relay
pinMode(RELAY_WATER_PUMP, OUTPUT);
// Inisialisasi sensor pH dan kelembaban tanah
pinMode(PH_SENSOR_PIN, INPUT);
pinMode(MOISTURE_SENSOR_PIN, INPUT);
// Inisialisasi LCD
lcd.begin(16, 2);
lcd.clear();
lcd.print("Smart Farming");
}
void loop() {
// Baca nilai sensor pH
float phValue = analogRead(PH_SENSOR_PIN);
phValue = (phValue / 1024) * 14; // Konversi nilai analog menjadi nilai pH
// Baca nilai sensor kelembaban tanah
int moistureValue = analogRead(MOISTURE_SENSOR_PIN);
// Cek apakah kelembaban tanah berada di bawah ambang batas
if (moistureValue < MOISTURE_THRESHOLD) {
// Aktifkan pompa air
digitalWrite(RELAY_WATER_PUMP, HIGH);
} else {
// Matikan pompa air
digitalWrite(RELAY_WATER_PUMP, LOW);
}
// Tampilkan data di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("pH: ");
lcd.print(phValue, 2); // Menampilkan dua angka di belakang koma
lcd.setCursor(0, 1);
lcd.print("Moisture: ");
lcd.print(moistureValue);
// Tampilkan data di Serial Monitor
Serial.print("pH: ");
Serial.print(phValue);
Serial.print(" | Moisture: ");
Serial.println(moistureValue);
delay(1000); // Delay 1 detik
}