При размыкании кнопки единожды выполнить функцию.
- Войдите на сайт для отправки комментариев
Ср, 04/04/2018 - 13:34
Всем доброго дня! Делаю GSM сигнализацию, нужно, чтобы она проверяла состояние двери и, если дверь открывается, то единоразово запускалась бы функция по отправке СМС. Реализовал, даже получилось, но терзают смутные сомнения. Пожалуйста, посмотрите кусок скетча с комментариями и скажите правильно ли я понял принцип ыполнения и насколько криво все реализовано? Если криво, подскажите, как будет правильнее! Спасибо!
const int PINKNOPKI = 4; // задаем константу номер входа, подключенный к геркону byte STATUSGERKONA = 0; // переменная для хранения состояния геркона byte flag = false; // флаг состояния void setup() { Serial.begin(9600); // инициализируем соединение для контроля работы программы в мониторе порта } void loop() { STATUSGERKONA = digitalRead(PINKNOPKI); // считываем значения с входа геркона // проверяем замкнут или разомкнут геркон if (STATUSGERKONA == HIGH && flag == false) { // если дверь открыта, геркон замкнут и флаг = false Serial.println("ГЕРКОН HIGH (ДВЕРЬ ЗАКРЫТА) - ДЕЖУРНЫЙ РЕЖИМ)"); // если дверь открыта, то переходим к выполнению отдельной функции flag = true; // устанавливаем значение переменной flag = true Serial.println("УСТАНАВЛИВАЕМ ЗНАЧЕНИЕ flag = true"); } if (STATUSGERKONA == LOW && flag == true) // если дверь закрыта, геркон разомкнут и флаг = false { Serial.println("ГЕРКОН LOW"); flag = false; // устанавливаем значение переменной flag = true Serial.println("И УСТАНАВЛИВАЕМ ЗНАЧЕНИЕ flag = false"); } }
Если работает, то потянет.
А если не работает, то в чем?
Если работает, то потянет.
А если не работает, то в чем?
Все работает. Вопрос в том правильно ли я понимаю принцип работы программы, правильного ли типа объявлены переменные и есть ли смысл что-то изменять, чтобы упростить код?
что я в коде не вижу отправки СМС, о которой вы говорите
По данному фрагменту невозможно судить ни о принципе, ни об упрощении.
Ну перекидываются значения переменной - и что дальше? Если вы пишете, что работает, значит правильно перекидываются. Объявления переменных потянут. Хотя и для пина можно взять тип byte.
Он вынесен в отдельную функцию, по ней у меня вопросов пока что нет.
Спасибо за совет. подправим!
Ответьте, пожалуйста, на последний вопрос: в комментариях я описал как работает этот кусок кода. Правильно ли я понимаю алгоритм работы? Если правильно, продолжим обучение дальше.
По данному фрагменту невозможно судить ни о принципе, ни об упрощении.
Зато можно судить о полном отсутствии присутствия обработки дребезга геркона.
ТС, геркон ртутный? Если нет, то надо помнить о дребезге.