</> Задания по ArduinoПрактические работы для Tinkercad Circuits · Школа № 2094

← все задания

06Индикатор влажности почвы

Соберите индикатор: датчик влажности на входе A5, три светодиода (зелёный, жёлтый, красный) на пинах 2, 3 и 4.

Средний

Задание

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

Что понадобится

  • 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–10setup(): три пина светодиодов переводим в режим выхода (OUTPUT). Пин датчика настраивать не нужно — аналоговые входы работают всегда.
12–13Начало loop(); analogRead(SENSOR_PIN) читает напряжение с A5 и возвращает число 0–1023 (чем больше число, тем суше почва) — сохраняем в sensorValue.
14–19Первая проверка: если значение 500 или меньше (почва очень сухая) — включаем только красный светодиод, два других гасим.
20–25Вторая проверка (else if): значение от 501 до 800 — почва нормальная, горит жёлтый, остальные выключены.
26–31Иначе (больше 800 — почва влажная) — включаем зелёный, красный и жёлтый гасим.
33delay(1000) — проверяем датчик раз в секунду: влажность меняется медленно, чаще не нужно.
34Конец loop(); анализ повторяется бесконечно.