
Интернет-магазин «Неглупый Дом»
Во всех защитных проектах на сайте порог срабатывания — это константа в коде (`THRESHOLD`, `MAX_VOLTAGE` и подобные), которую приходится менять и заново заливать скетч, если нужно её подстроить. Здесь порог задаёт многооборотный потенциометр — его можно крутить прямо во время работы схемы, точно подбирая нужное значение без единого обращения к компьютеру.
Обычный однооборотный потенциометр (как в большинстве других проектов на сайте) проходит весь диапазон сопротивления за один неполный оборот рукоятки — это удобно для быстрой, но грубой регулировки. Многооборотный потенциометр устроен иначе: внутри него винтовой механизм, и чтобы пройти весь диапазон, рукоятку нужно повернуть множество раз (например, 10 полных оборотов) — каждый отдельный оборот меняет сопротивление лишь на небольшую часть всего диапазона, что даёт заметно более точную, "ювелирную" настройку нужного значения.
В этом проекте Arduino одновременно читает два аналоговых сигнала: показания внешнего датчика (в примере — просто демонстрационное значение, замените на реальный датчик из другого проекта на сайте) и положение самого потенциометра, пересчитанное в тот же диапазон. Как только показания датчика превышают текущее положение потенциометра — реле срабатывает. Поворачивая ручку потенциометра, можно в реальном времени, не трогая код, увидеть и подстроить момент срабатывания.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему. Вместо `analogRead(SENSOR_PIN)`
// подставьте реальное чтение датчика из нужного вам проекта на сайте.
const int POT_PIN = A0;
const int SENSOR_PIN = A1; // замените на реальный датчик из другого проекта
const int RELAY_PIN = 4;
void setup() {
Serial.begin(9600);
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
}
void loop() {
int threshold = analogRead(POT_PIN); // 0-1023, задаётся вручную оборотами потенциометра
int sensorValue = analogRead(SENSOR_PIN);
Serial.print("Порог: ");
Serial.print(threshold);
Serial.print(" | Датчик: ");
Serial.println(sensorValue);
digitalWrite(RELAY_PIN, sensorValue > threshold ? HIGH : LOW);
delay(200);
}
Дополнительных библиотек не требуется — только `analogRead()` и `digitalWrite()`. Текущий установленный порог всегда виден в мониторе порта вместе с реальными показаниями датчика, что удобно для точной настройки в реальном времени.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 292 ₽ 263 ₽ (экономия 29 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.