# ex_3_5_06_lcd_soil.py (จำลอง: https://wokwi.com/projects/469958317501033473)
from machine import Pin, I2C, ADC
from lcd_i2c_esp32 import I2cLcd
import time
i2c = I2C(0, sda=Pin(21), scl=Pin(22), freq=100000)
lcd = I2cLcd(i2c, 0x27, 2, 16)
soil = ADC(Pin(34))
soil.atten(ADC.ATTN_11DB)
DRY_CAL, WET_CAL = 3150, 1250 # ค่าสอบเทียบจากบท 3.3 (ค่าตัวอย่าง)
while True:
raw = soil.read()
pct = (DRY_CAL - raw) / (DRY_CAL - WET_CAL) * 100
pct = max(0.0, min(100.0, pct))
lcd.move_to(0, 0)
lcd.putstr("Soil: {:5.1f}% ".format(pct)) # เว้นท้ายให้ทับข้อความเก่าพอดี 16 ตัว
lcd.move_to(0, 1)
lcd.putstr("Pump: {} ".format("ON " if pct < 30 else "OFF"))
time.sleep(2)