int water; // присваиваем имя датчику уровня воды на A0
#include <DHT.h> // подключаем библиотеку (надо скачать, если не установлена)
#define DHTPIN 3 // подключаем сигнальный провод датчика для считывания сигнала
#define DHTTYPE DHT11 // ?
DHT dht(DHTPIN, DHTTYPE); // ?
#define rainPin A1 //пин датчика влажности почвы А1
#define yellowLED 7 //пин желтого светодиода
#define thresholdValue 800 //обозначаем порог сухости (можно изменить для регулировки)
#include <Servo.h> // подключаем библиотеку для управления сервой
int servoPin = 11; // подключаем серву к 11 пину
Servo servo; // вводим переменную типа серво
void setup() // процедура setup
{
pinMode(2, OUTPUT); // пин 2 со светодиодом будет обозначать низкий уровень воды в баке
pinMode(A0, INPUT); // к входу A0 подключим датчик уровня воды
Serial.begin(9600); // подключаем монитор порта (чтобы вызвать его и откалибровать)
Serial.begin(9600); // протокол связи в диапазоне?
dht.begin(); // понятия не имею что это
pinMode(8, OUTPUT);
pinMode(rainPin, INPUT); // обозначаем А1 как вход
pinMode(yellowLED, OUTPUT); // обозначаем 7 пин как выход
Serial.begin(9600); // не уверен что он тут нужен
servo.attach(servoPin); // подключаем переменную к порту сервы
}
void loop() // процедура loop
{
water = analogRead(A0); // переменная "water" находится в интервале от 0 до 1023
if (water < 540) { digitalWrite(2, HIGH); } // включаем светодиод если значение датчика < 540
if (water > 540) { digitalWrite(2, LOW); } // выключаем светодиод если значение датчика > 540
Serial.println(water); // выводим значение датчика на монитор (чтобы откалибровать)
delay(1000); // задержка в одну секунду
float h = dht.readTemperature(); // вводим переменную h, она берет данные с термометра
if (h>30) // если температура выше 30
{
digitalWrite(4, HIGH); // включаем светодиод
delay(250);
digitalWrite(8, HIGH); // включаем вентилятор
}
else // иначе
{
digitalWrite(4, LOW); // выключаем светодиод
delay(250);
digitalWrite(8, LOW); // выключаем вентилятор
}
int sensorValue = analogRead(rainPin); // вводим переменную, которая читает значения с датчика влажности
Serial.print(sensorValue); // выводим данные на монитор порта
if(sensorValue < thresholdValue) // если значение датчика меньше порога сухости
{
Serial.println("Полив не нужен"); // если будет дисплей, то пригодится
digitalWrite(yellowLED, LOW); // выключить светодиод
servo.write(0); // оставить серво в 0 градусов
}
else // иначе
{
Serial.println("Пора полить"); // если будет дисплей, то пригодится
digitalWrite(yellowLED, HIGH); // включить светодиод
servo.write(90); // повернуть серву на 90 градусов
}
delay(500);
}