
Интернет-магазин «Неглупый Дом»
В проекте про тумблер ON-ON на этом сайте ручной переключатель только ФОРСИРУЕТ включение реле, не блокируя автоматику полностью — в разделе "Как улучшить" там прямо обещан вариант полной блокировки. Вот он: тумблер ON-OFF здесь полностью замещает решение автоматики, когда включён.
Вместо ИЛИ-логики из другого проекта здесь используется настоящее ветвление: `if (manualMode) { relayState = manualPosition; } else { relayState = autoCondition; }` — когда тумблер в ручном положении, результат автоматики полностью ИГНОРИРУЕТСЯ (не просто дополняется), давая настоящий полный обход, полезный, например, во время обслуживания, когда автоматика вообще не должна вмешиваться.
ON-OFF подходит для этого лучше, чем ON-ON: одно положение однозначно означает "сейчас ручное управление" (а не "временно форсирую включение"), второе чётко отдаёт управление автоматике — такая семантика точнее соответствует смыслу "обход активен / обход неактивен", чем два одинаково активных положения ON-ON.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему. Замените autoCondition
// на реальную логику автоматики из нужного вам проекта на сайте.
const int SWITCH_PIN = 2;
const int RELAY_PIN = 4;
void setup() {
pinMode(SWITCH_PIN, INPUT_PULLUP); // тумблер замыкает на GND в одном положении
pinMode(RELAY_PIN, OUTPUT);
}
void loop() {
bool manualMode = digitalRead(SWITCH_PIN) == LOW; // замкнут на GND = ручной режим активен
bool autoCondition = false; // например, результат analogRead() датчика с другого проекта
bool relayState;
if (manualMode) {
relayState = true; // в ручном режиме в этом демо просто включено; добавьте второй вход, если нужно и выключать вручную
} else {
relayState = autoCondition; // автоматика управляет только когда тумблер в положении "авто"
}
digitalWrite(RELAY_PIN, relayState ? HIGH : LOW);
delay(100);
}
Дополнительных библиотек не требуется — только `digitalRead()`/`digitalWrite()`.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 144 ₽ 130 ₽ (экономия 14 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.