#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD, alamat I2C 0x27 untuk LCD 16x2
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int soilMoisturePin = 34; // ADC1 Channel 6 (GPIO34)
const int pHLevelPin = 35; // ADC1 Channel 7 (GPIO35)
void setup() {
// Inisialisasi komunikasi serial
Serial.begin(115200);
// Inisialisasi pin input
pinMode(soilMoisturePin, INPUT);
pinMode(pHLevelPin, INPUT);
// Inisialisasi LCD
lcd.init();
lcd.begin(16, 2);
lcd.backlight();
// Menampilkan pesan awal pada LCD
lcd.setCursor(0, 0);
lcd.print("Soil Monitor");
delay(2000);
lcd.clear();
}
void loop() {
// Membaca nilai dari sensor kelembaban tanah (simulasi dengan potensiometer)
int soilMoistureValue = analogRead(soilMoisturePin);
// Mengonversi nilai ADC menjadi persentase
float soilMoisturePercentage = map(soilMoistureValue, 0, 4095, 0, 100);
// Membaca nilai dari sensor pH tanah (simulasi dengan potensiometer)
int pHLevelValue = analogRead(pHLevelPin);
// Mengonversi nilai ADC menjadi skala pH 0-14
float pHLevel = map(pHLevelValue, 0, 4095, 0, 14);
// Menampilkan nilai pada Serial Monitor
Serial.print("Soil Moisture: ");
Serial.print(soilMoisturePercentage);
Serial.println("%");
Serial.print("pH Level: ");
Serial.println(pHLevel);
// Menampilkan nilai pada LCD
lcd.setCursor(0, 0);
lcd.print("Moisture: ");
lcd.print(soilMoisturePercentage);
lcd.print("% ");
lcd.setCursor(0, 1);
lcd.print("pH: ");
lcd.print(pHLevel);
lcd.print(" ");
// Menunggu 1 detik sebelum pembacaan berikutnya
delay(1000);
}