import machine
import time
# Налаштування аналогових входів (ADC)
# ADC0 = GP26, ADC1 = GP27, ADC2 = GP28
soil_sensor = machine.ADC(26)
rain_sensor = machine.ADC(27)
light_sensor = machine.ADC(28)
# Функція для переведення сирих значень (0-65535) у відсотки (0-100%)
# Більшість резистивних датчиків видають макс. значення, коли сухо/темно
def convert_to_percent(value):
# Інвертуємо значення: (max_value - current_value)
# Це приблизна формула, залежить від конкретного датчика
percentage = (65535 - value) / 65535 * 100
return max(0, min(100, percentage)) # Обмежуємо між 0 і 100
print("Моніторинг теплиці запущено...")
# Створення/Очищення файлу при старті (або можна використовувати 'a' для дописування)
file = open("greenhouse_log.txt", "w")
file.write("Час, Грунт(%), Дощ(%), Світло(%)\n")
file.close()
try:
while True:
# Зчитуємо "сирі" дані (0-65535)
raw_soil = soil_sensor.read_u16()
raw_rain = rain_sensor.read_u16()
raw_light = light_sensor.read_u16()
# Конвертуємо у зрозумілі відсотки
soil_pct = convert_to_percent(raw_soil)
rain_pct = convert_to_percent(raw_rain)
light_pct = convert_to_percent(raw_light) # Тут логіка може бути іншою залежно від схеми
# Формуємо рядок часу
now = time.localtime()
time_str = "{:02d}:{:02d}:{:02d}".format(now[3], now[4], now[5])
# Вивід у консоль
print(f"[{time_str}] Грунт: {soil_pct:.1f}% | Дощ: {rain_pct:.1f}% | Світло: {light_pct:.1f}%")
# Логіка попереджень
if soil_pct < 30:
print("⚠️ УВАГА: Час поливати рослини!")
if rain_pct > 80:
print("⚠️ УВАГА: Іде сильний дощ!")
# Запис у файл
with open("greenhouse_log.txt", "a") as f:
f.write(f