СОДЕРЖАНИЕ ►
Рассмотрим на этом занятии аналоговый датчик протечки воды (уровня жидкости). Расскажем, как подключить датчик к аналоговому порту на Arduino. Самостоятельно напишем скетч для вывода показаний датчика протечки воды на серийный порт. Рассмотрим команды Serial.begin и Serial.print в языке программирования C++ для вывода информации с микроконтроллера Arduino на серийный монитор порта.
На этом занятии мы соберем схему и напишем скетч для автоматического включения светодиода при попадании воды на наш датчик (Water Sensor). Для начала нам необходимо узнать, какое значение мы будем получать на аналоговом порту, когда датчик будет в воде. Далее в скетче мы добавим условие включения светодиода при достижении максимального порога и его автоматического отключения.
Датчик уровня жидкости (Water Sensor Arduino)
Рабочее напряжение аналогового сенсора — 5v. Выходное напряжение (показания датчика) зависит от степени погружения датчика в жидкость и от параметров, влияющих на коэффициент передачи напряжения, например, проводимость жидкости. Это простой в использование и недорогой датчик уровня жидкости, который широко применяется в системах автоматизации и при разработке Умного дома.

Как вы уже заметили на фото к этому занятию, датчик уровня жидкости имеет три контакта. Правый контакт (-) подключается к Земле (GND), средний к питанию 5v, а левый к аналоговому входу, например, A0. При полностью сухом датчике выходное напряжение и показания на аналоговом входе будут равны нулю, чем больше датчик будет погружен в воду, тем больше будут его показания (от 0 до 1023).
Как подключить датчик воды к Ардуино
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- датчик воды;
- 1 светодиод и резистор 220 Ом;
- провода «папа-папа» и «папа-мама».

Перед тем как, подключить датчик протечки воды к плате Ардуино, следует написать скетч. Откройте программу Arduino IDE и вы увидите скетч, где уже прописаны процедуры void setup() и void loop(). Для начала зададим переменную water с помощью оператора int. Переменную мы будем использовать для хранения данных в памяти и присваивания ей значения, получаемого с датчика воды.

В процедуре void setup() мы прописываем режим работы аналогового порта, как вход — команда pinMode(AO,INPUT) и подключаем монитор порта с помощью Serial.begin(9600). Далее в процедуре void loop() получаем значение с аналогового порта с помощью команды water = analogRead(A0); и передаем значение на монитор порта Arduino IDE Serial.println(water); и ставим паузу для нашего удобства.
Скетч для датчика воды (water sensor)
int water; // присваиваем имя для значений с аналогового входа A0 void setup() { pinMode(A0, INPUT); // к входу A0 подключим датчик (англ. «intput») Serial.begin(9600); // подключаем монитор порта } void loop() { water = analogRead(A0); // переменная "water" находится в интервале от 0 до 1023 Serial.println(water); // выводим значение датчика на монитор delay(1000); // задержка в одну секунду }
Пояснения к коду:
- в первой строчке мы присвоили переменной int имя
waterдля хранения значений c входа A0, значенияwaterмогут принимать только целое число.
После загрузки скетча вы сможете получить данные с датчика на мониторе порта. Для этого перейдите в Arduino IDE в Панель меню — Инструменты — Монитор порта. Или используйте для открытия сочетание клавиш Ctrl + Shift + M. После того, как мы узнали показания датчика при его увлажнении, мы можем добавить в скетч функцию автоматического включения светодиода при превышении какого-либо значения.
Скетч для датчика воды и светодиода Ардуино
int water; // присваиваем имя для значений с аналогового входа A0 void setup() // процедура setup { pinMode(12, OUTPUT); // пин 12 со светодиодом будет выходом (англ. «output») pinMode(A0, INPUT); // к входу A0 подключим датчик (англ. «intput») Serial.begin(9600); // подключаем монитор порта } void loop() // процедура loop { water = analogRead(A0); // переменная "water" находится в интервале от 0 до 1023 if (water > 100) { digitalWrite(12, HIGH); } // включаем светодиод if (water < 100) { digitalWrite(12, LOW); } // выключаем светодиод Serial.println(water); // выводим значение датчика на монитор delay(1000); // задержка в одну секунду }
Пояснения к коду:
- условный оператор if позволяет определить действие при истинном условии;
- в процедуре void loop с помощью оператора if включаем светодиод при значении
water > 100и выключаем светодиод при значенииwater < 100.










Подскажите, пожалуйста. Если мне требуется включать от датчика воды мотор постоянного тока на Arduino, например для авто полива цветов. Какой будет скетч и при каком значении следует включать двигатель?
Я конечно не мастер, но по идее все примерно также только вместо светодиода через транзистор будет мотор. Датчик воды довольно чувствительный, реагирует даже на дыхание, так что значение лучше поставить под 200.
Если датчик не показывает значения больше 710, это в нем неисправность?
Это не значит, что датчик воды сломан, просто это его максимальные значения. Часть тока еще теряется за счет сопротивления в датчике. Максимальное значение (1023) не выдаст не один датчик. Это возможно, если только напрямую 5V подключить к аналоговому входу.
Если он не в воде и oн полностью тряпкой высушен он должен показывать ноль.Но в воде он должен где-то 700 показывать
Какую обвязку имеет сам датчик? В плане того, чтобы заменить его на систему электродов для измерения уровня жидкости в емкости. Но в простом варианте между электродами нам нужно измерять сопротивление, здесь же датчик выдает в ответ ток…
Посмотрите здесь: датчик воды своими руками
Дайте пожалуйста схему подключения датчик воды и светодиода. Я просто начинающий.