06Индикатор влажности почвы
Соберите индикатор: датчик влажности на входе A5, три светодиода (зелёный, жёлтый, красный) на пинах 2, 3 и 4.
Задание
- Подключите аналоговый выход датчика влажности к A5, питание — к 5V и GND.
- Подключите светодиоды: зелёный — пин 2, жёлтый — пин 3, красный — пин 4 (каждый через резистор 220 Ом).
- Напишите программу: при значении 500 и меньше горит красный, до 800 — жёлтый, иначе — зелёный.
- Проверьте работу: сухая почва — красный, политая — зелёный.
- Дополнительно: выведите значение датчика в «Монитор порта», чтобы понять, какие числа даёт ваша почва, и подберите свои пороги.
Что понадобится
- Arduino Uno
- Датчик влажности почвы
- 3 светодиода (зелёный, жёлтый, красный)
- 3 резистора 220 Ом
- Провода
Схема

Соберите схему в Tinkercad Circuits так же, как на картинке.
Код
Скопировать нельзя специально — наберите код руками и подумайте над каждой строкой.
1#define GREEN_LED 2
2#define YELLOW_LED 3
3#define RED_LED 4
4#define SENSOR_PIN A5
5void setup()
6{
7 pinMode(GREEN_LED, OUTPUT);
8 pinMode(YELLOW_LED, OUTPUT);
9 pinMode(RED_LED, OUTPUT);
10}
11
12void loop() {
13 int sensorValue = analogRead(SENSOR_PIN);
14 if (sensorValue <= 500)
15 {
16 digitalWrite(GREEN_LED, LOW);
17 digitalWrite(YELLOW_LED, LOW);
18 digitalWrite(RED_LED, HIGH);
19 }
20 else if (sensorValue <= 800)
21 {
22 digitalWrite(GREEN_LED, LOW);
23 digitalWrite(YELLOW_LED, HIGH);
24 digitalWrite(RED_LED, LOW);
25 }
26 else
27 {
28 digitalWrite(GREEN_LED, HIGH);
29 digitalWrite(YELLOW_LED, LOW);
30 digitalWrite(RED_LED, LOW);
31 }
32
33 delay(1000);
34}
Что делает каждая строка
| Строка | Что делает |
|---|---|
| 1–4 | #define — это «псевдонимы»: вместо чисел в коде можно писать GREEN_LED, YELLOW_LED, RED_LED и SENSOR_PIN. Программа становится понятнее, а при переподключении меняем одно число в одном месте. |
| 5–10 | setup(): три пина светодиодов переводим в режим выхода (OUTPUT). Пин датчика настраивать не нужно — аналоговые входы работают всегда. |
| 12–13 | Начало loop(); analogRead(SENSOR_PIN) читает напряжение с A5 и возвращает число 0–1023 (чем больше число, тем суше почва) — сохраняем в sensorValue. |
| 14–19 | Первая проверка: если значение 500 или меньше (почва очень сухая) — включаем только красный светодиод, два других гасим. |
| 20–25 | Вторая проверка (else if): значение от 501 до 800 — почва нормальная, горит жёлтый, остальные выключены. |
| 26–31 | Иначе (больше 800 — почва влажная) — включаем зелёный, красный и жёлтый гасим. |
| 33 | delay(1000) — проверяем датчик раз в секунду: влажность меняется медленно, чаще не нужно. |
| 34 | Конец loop(); анализ повторяется бесконечно. |