🛒
0 товар.
0 руб.
Логотип

Интернет-магазин «Неглупый Дом»

☰
ИИ-консультант Wildberries OZON Яндекс Маркет
Поиск по сайту
Гугл таблица с ассортиментом

📊 Проект: индикатор уровня воды в баке на LCD1602

Датчик уровня воды и LCD1602

Датчик уровня показывает состояние бака на LCD1602 и подаёт сигнал тревоги при критически низком уровне.

Как это работает

Контактный датчик уровня — это, по сути, электрический переключатель: два щупа опускаются в бак на нужной высоте, и когда вода их касается (вода — проводник, хоть и не идеальный), цепь замыкается и сигнал на пине меняется. Такой датчик даёт только бинарный ответ "вода выше этой точки / воды здесь нет" — для контроля минимального уровня в баке, который доливают вручную, этого достаточно: не нужна точная величина объёма, важно вовремя узнать, что пора доливать.

Полярность сигнала (`HIGH` при наличии воды или, наоборот, `LOW`) зависит от конкретной модели датчика и способа подключения — если показания получаются "перевёрнутыми" относительно реальности, логику в коде нужно просто инвертировать.

Пошаговая сборка

Так как реализации модуля бывают разные, если контактов как в примере нет на вашей плате — сориентируйтесь по надписям на своей.

  1. Датчик уровня: сигнал → D2, VCC → 5V, GND → GND.
  2. LCD1602 с I2C: SDA → A4, SCL → A5.
  3. Активный зуммер: сигнал → D8.
  4. Закрепите щупы датчика на нужной минимальной высоте внутри бака.
  5. Проверьте реакцию на реальном понижении уровня воды — если показания инвертированы, поменяйте `== HIGH` на `== LOW` в коде.

Скетч

// ВНИМАНИЕ: отладьте через монитор порта — я языковая модель, а не
// специализированный кодер, основу накидал, проверьте под свою схему.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

const int levelPin = 2;
const int buzzerPin = 8;
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  Serial.begin(9600);
  pinMode(levelPin, INPUT);
  pinMode(buzzerPin, OUTPUT);
  lcd.init();
  lcd.backlight();
}

void loop() {
  bool hasWater = digitalRead(levelPin) == HIGH; // смените на == LOW, если полярность инвертирована на вашем датчике
  lcd.setCursor(0, 0);
  lcd.print(hasWater ? "Tank: OK      " : "Tank: LOW!    ");
  digitalWrite(buzzerPin, hasWater ? LOW : HIGH);
  if (!hasWater) {
    Serial.println("Низкий уровень воды!");
  }
  delay(2000);
}
                

Для нескольких уровней можно поставить два-три таких датчика на разной высоте на отдельные пины.

Частые проблемы

Как улучшить проект

Товары по теме

Ещё модули для Arduino: Электронные модули.

← 🦎 таймер УФ-лампы для террариума…🔄 поворотный стол на шаговом дви… →

🎁 Купить весь комплект со скидкой 10%

Все 2 товара сразу: 275 ₽ 248 ₽ (экономия 27 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина

Поиск


Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA