Защита от протечки

Вы невнимательно смотрели:

         // управляем мотором в ручном режиме в соответствии с состоянием кнопки 1 **(открыть)**
         if(buttonState == LOW) {
         digitalWrite (**IN1**, HIGH);    // включить мотор

         // управляем мотором в ручном режиме в соответствии с состоянием кнопки 2 **(закрыть)**
         if(buttonState_2 == LOW) {
         digitalWrite (**IN2**, HIGH);      // включить мотор

Сигналы подаются с IN 1 на открытие, и с IN 2 на закрытие.

Что я описал неправильно? Работоспособность системы уже опробована на практике, так что этот код не просто теоретическая разработка. При ручном управлении достаточно кратковременного нажатия на кнопку, после чего напряжение на мотор подаётся в течении 7 секунд. Сигналы с ардуины идут через драйвер L298N, я об этом написал ещё в первом сообщении.
При автоматическом режиме, когда краны естественно открыты, после сигнала тревоги краны закрываются.
После устранения протечки (датчики сухие) краны открываются кнопкой открытия.
Если протечка НЕ устранена (датчики мокрые) нажатие на кнопку открытия краны не открывает. При этом звучащий прерывистый сигнал тревоги сменяется непрерывным писком. Это всё проверено.

Вот это и неудобно. Пока вы не вернетесь, все сидят без воды.

Кто, все? Вода перекрывается только в моей квартире, спасая её от затопления, а не во всём доме.

Да, можно отключить питание и вручную повернуть краны, там для этого сделано специальное колечко.

Это наверно промышленные системы, когда датчики разнесены на десятки и сотни метров. По аналогии с сигнализацией: зачем знать через какое окно залезли воры?)
Конечно, если уж так труднодоступны коммуникации, то вопрос не в датчиках, а в неправильном дизайне. Всё должно быть доступно.
Не, ну я по себе сужу. Если квартира 8ми комнатная 200м2 или коттедж, тогда да, нужны независимые датчики.

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

Обязательно предусмотрите кнопку “заткнись” – возможность отключить звуковой сигнал аварии (с сохранением световых сигналов), иначе он вынесет Вам мозг пока Вы будете заниматься устранением и пока датчики не просохнут.

У меня не было такой кнопки на сигнализаторе утечки газа, а он любит срабатывать, когда, например, где-то рядом поработаешь лаком или ацетоном, так задолбало. В итоге, переделал сигнализатор добавил такую кнопку – как разорётся, давлю, он умолкает, но мигать красным продолжает. Когда состояние тревоги уйдёт, через несколько минут (для гистерезиса) сам возвращается в обычный дежурный режим (это, чтобы не было так, что “выключил, забыл и оно больше вообще не верещит никогда”).

У меня вапще алармит 2 минуты, потом, если вручную не отключишь, то сам отключается. Это на случай, если оварея случилась ночью, а нас никаво дома нет, зачем соседям эти писки слушать? А так, краны перекрыл, попикал 2 минуты, 4 СМС отправил на 2 номера - и спи-отдыхай.

Upd. Даччики у меня беспроводные на Тиньках, 6 штук. По HC-12 передают состояние раз в минуту, чтоб я знал, када батарейки менять.

Upd2. Нада, наерна собрать всё в кучу, да проект выкласть штоли. 9 лет пока без нареканий работает.

Это можно исправить сделав прописывание датчиков в памяти. У вас уже “даром” на борту энергонезависимая память. При включении проверяйте состояние кнопки, если она в этот момент нажата, определяйте какие из датчиков дают “мокрое” состояние (а такими же будут и отключенные), запоминайте их. Проверку производите только по тем датчикам, которые были в момент “калибровки” сухими. А после перезапуска у вас в памяти сохраненные рабочие датчики, применяйте эти параметры.

Кстати, если у вас система сработает на протечку, то через не очень определенное время (варьируется в пределах месяца с хвостиком) она начнет глючить - сигнализация будет то работать то не работать (но кранами будет управлять). Это касается беспрерывного режима работы, без перезапуска (штатный режим для такой системы).

2016г GIDROLOCK - заменил уже акк пару раз. Срабатывал на соседей в основном. Да, и на кошку ещё, но тут такого писать похоже нельзя.

2017г Нептун - в этом году поменял на такой же, тк там места нет Гидролока впялить. Краны были ОК но привод сожрал свой концевик.

Ничего хитрого в логике: при включении проверяет: если датчики сухите, то открывает краны, если они закрыты. При сработке закрывает и пищит минут 10. Потом не помню, вроде попискивает тоже периодически, а может и нет. То есть там из управления только сетевой выключатель.

Тут можно просто отключить питание, когда будешь устранять причину потопа.

Это почему так?

millis…

И что?

В алгоритме “блинк” на него завязан. Сработав на больших значениях и после выхода на второй круг будет молчать до наступления момента прошлого срабатывания по циклу переполнения.
Исправляется применением abs в условии блинка (разница по модулю).

Про Миллис уже тысячи страниц и десятки мегабайт текста. Если правильно вычитать, то ничего не произойдёт.

Но тут же не? Обсуждение не идеального кода, а опубликованного как рабочий и протестированный проект.

if (millis() - myTimer >= 500) {   // таймер на 500 мс (2 раза в сек)
             myTimer = millis();   

Итак, вводные условия. Последнее срабатывание протечки было на значениях millis()==1000000. Прошло время и сейчас millis()==1000, сработал датчик. Не моргаем, не пищим.

Вот кстати для кода полезно, когда это сначала “теоретическая разработка”, а не подгонка под частные случаи. Такие ошибки еще на этапе проектирования отсекаются.

Сами-то поняли, что написали?

сколько можно это мусолить?
вам в прошлый раз сказали, делайте правильно и ничего не будет переполнятся, видимо не вникли.