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