from machine import Pin, ADC
import time
sensor = ADC(Pin(34)) # Analog input pin on ESP32
sensor.atten(ADC.ATTN_11DB) # Full range: 0–3.3V
pump = Pin(15, Pin.OUT) # Digital output for pump LED
MOISTURE_THRESHOLD = 30
def map_value(x, in_min, in_max, out_min, out_max):
return (x - in_min) * (out_max - out_min) // (in_max - in_min) + out_min
raw = sensor.read()
moisture = map_value(raw, 4095, 0, 0, 100)
moisture = max(0, min(100, moisture))
if moisture < MOISTURE_THRESHOLD:
print(f"💧 Moisture: {moisture:.2f}% | Soil is dry. Pump ON.")
pump.value(1)
else:
print(f"✅ Moisture: {moisture:.2f}% | Soil is moist. Pump OFF.")
pump.value(0)