Подключение датчика влажности почвы

В этой статье мы рассмотрим варианты подключения датчика влажности почвы.
Вариант 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 секунд и давать команду на светодиоды, которые будут информировать о состоянии почвы.