В этой статье мы рассмотрим варианты подключения датчика влажности почвы.
Вариант 1. Подключение с постоянным питанием.
Этот способ универсален, но для датчика влажности почвы он не очень подходит, т.к. на щупы датчика постоянно подается малый ток и во влажной среде они окисляются, что со временем может привести к выходу из строя самого датчика. Единственный плюс этого подключения состоит в том, что состояние влажности почвы мы можем наблюдать постоянно.
Перед использованием датчика его необходимо откалибровать с помощью монитор-порта.
#define ANALOG A3 int value = 0; void setup() { pinMode(ANALOG, INPUT); Serial.begin(9600); } void loop() { value = analogRead(ANALOG); Serial.println(value); delay(200); }
Теперь можно приступать к написанию скетча.
#define ANALOG A3 #define LED_PIN1 6 #define LED_PIN2 9 #define VALUE_LIMIT 520 int value = 0; void setup() { pinMode(ANALOG, INPUT); pinMode(LED_PIN1, OUTPUT); pinMode(LED_PIN2, OUTPUT); } void loop() { value = analogRead(ANALOG); if (value < VALUE_LIMIT) { digitalWrite(LED_PIN1, HIGH); digitalWrite(LED_PIN2, LOW); } else { digitalWrite(LED_PIN1, LOW); digitalWrite(LED_PIN2, HIGH); } }
В итоге получается, что когда почва сухая загорается красный светодиод, а когда влажная - загорается зеленый, при этом красный затухает.
Вариант 2. Подключение с управляемым питанием.
Подключив датчик к управляющим контактам контроллера, мы можем программно включать питание через определенный промежуток времени. Тем самым мы продлим срок службы щупов датчика и уменьшим скорость окисления.
Зальем следующий скетч:
#define VCC A1 #define GND A2 #define ANALOG A3 #define LED_PIN1 6 #define LED_PIN2 9 #define VALUE_LIMIT 520 int value = 0; void setup() { pinMode(VCC, OUTPUT); pinMode(GND, OUTPUT); pinMode(ANALOG, INPUT); pinMode(LED_PIN1, OUTPUT); pinMode(LED_PIN2, OUTPUT); digitalWrite(VCC, LOW); digitalWrite(GND, LOW); } void loop() { digitalWrite(VCC, HIGH); value = analogRead(ANALOG); if (value < VALUE_LIMIT) { digitalWrite(LED_PIN1, HIGH); digitalWrite(LED_PIN2, LOW); } else { digitalWrite(LED_PIN1, LOW); digitalWrite(LED_PIN2, HIGH); } delay(10000); }
В итоге получим, что датчик будет включаться раз в 10 секунд и давать команду на светодиоды, которые будут информировать о состоянии почвы.