#define SOIL_ANALOG_PIN 34 // Connected to sensor A0
#define SOIL_DIGITAL_PIN 25 // Connected to sensor D0
#define ALERT_LED_PIN 2 // Alert LED
void setup() {
Serial.begin(115200);
pinMode(SOIL_DIGITAL_PIN, INPUT);
pinMode(ALERT_LED_PIN, OUTPUT);
Serial.println("--- Capacitive Soil Moisture Sensor System Ready ---");
}
void loop() {
int rawADC = analogRead(SOIL_ANALOG_PIN);
float voltage = (rawADC / 4095.0) * 3.3;
// Real sensor voltage mapping (3.0V = 0% Dry, 1.0V = 100% Wet)
int moisturePercent = map(rawADC, 3722, 1241, 0, 100);
moisturePercent = constrain(moisturePercent, 0, 100);
int isDry = digitalRead(SOIL_DIGITAL_PIN);
Serial.print("Moisture: ");
Serial.print(moisturePercent);
Serial.print("% | ADC: ");
Serial.print(rawADC);
Serial.print(" | Voltage: ");
Serial.print(voltage, 2);
Serial.print("V | Status: ");
if (isDry == HIGH) {
Serial.println("⚠️ DRY SOIL - IRRIGATION NEEDED!");
digitalWrite(ALERT_LED_PIN, HIGH);
} else {
Serial.println("✅ MOISTURE NORMAL");
digitalWrite(ALERT_LED_PIN, LOW);
}
delay(1000);
}