Страница 1 из 2

разовое срабатывание при нуле 0

Добавлено: 10.07.2019{, 16:15}
НовыйUser
Подскажите варианты организовать разовое срабатывание при 0 после того как прошло срабатывание при 1

разовое срабатывание при нуле 0

Добавлено: 10.07.2019{, 16:29}
Sancho
НовыйUser, Может не так понял?
СпойлерПоказать
screenshot_19-07-10_16-28-57.png
screenshot_19-07-10_16-28-57.png (2.97 КБ) 695 просмотров

разовое срабатывание при нуле 0

Добавлено: 10.07.2019{, 16:40}
НовыйUser
Sancho, я иногда сам себя не понимаю :D

есть выход (с блока AND) по которому разветвляются события. Первое срабатывает при = 1, второе срабатывает при = 0. Особенность их в том что они должны разово срабатывать :) А вот с точки зрения оптимального кода и быстродействия не понятно какую схему предпочесть для такого решения. Либо последовательно разграничить событие (как в примере) либо параллельно.

Отправлено спустя 5 минут 52 секунды:
Sancho писал(а):
10.07.2019{, 16:29}
Может не так понял?
тип boolean

разовое срабатывание при нуле 0

Добавлено: 10.07.2019{, 16:48}
Sancho
НовыйUser, Бывает :)
СпойлерПоказать
screenshot_19-07-10_16-48-10.png
screenshot_19-07-10_16-48-10.png (5.87 КБ) 684 просмотра

разовое срабатывание при нуле 0

Добавлено: 10.07.2019{, 16:51}
НовыйUser
Sancho, Ftrig ? :shok:

еще бы хотелось базовыми блоками найти решения.
использовать максимум базовых большее предпочтение с учетом исключения первого старта с нулем у второго события

:)

куда обратиться чтобы ftrig вошел в базовые блоки программы ? :)

разовое срабатывание при нуле 0

Добавлено: 10.07.2019{, 16:56}
Sancho
НовыйUser писал(а):
10.07.2019{, 16:51}
еще бы хотелось базовыми блоками найти решения.
Тогда так. Проще не бывает, поверь. Честно-честно.
СпойлерПоказать
screenshot_19-07-10_16-55-31.png
screenshot_19-07-10_16-55-31.png (11.55 КБ) 680 просмотров
Только нужно обязательно проверить порядок выполнения, сверху вниз.
СпойлерПоказать
screenshot_19-07-10_16-57-57.png
screenshot_19-07-10_16-57-57.png (16.13 КБ) 677 просмотров

разовое срабатывание при нуле 0

Добавлено: 10.07.2019{, 17:05}
НовыйUser
Sancho, теперь задумался :D

а нет ли вариантов сработку нуля организовать после сработки по единице, если в таком исполнении будет проще (с учетом исключения ложного первичного старта нулевой сработки) ?

*спс. тестирую предложенные варианты

разовое срабатывание при нуле 0

Добавлено: 10.07.2019{, 17:11}
Sancho
НовыйUser писал(а):
10.07.2019{, 17:05}
а нет ли вариантов сработку нуля организовать после сработки по единице, если в таком исполнении будет проще (с учетом исключения ложного первичного старта нулевой сработки) ?
Ничего толком не понял... :) , но:
всё зависит от того, чем проинициализирована переменная "Старое состояние" при старте программы, True или False.
Настрой так, как нужно. Можешь сделать две переменные, с true и false в начале.

разовое срабатывание при нуле 0

Добавлено: 10.07.2019{, 17:19}
НовыйUser
спасибо за подсказки,решено :)

разовое срабатывание при нуле 0

Добавлено: 10.07.2019{, 20:45}
Phazz
Детектор бита попробуйте.

разовое срабатывание при нуле 0

Добавлено: 10.07.2019{, 23:09}
НовыйUser
Phazz писал(а):
10.07.2019{, 20:45}
Детектор бита попробуйте.
он после сработки держит единицу на выходе

разовое срабатывание при нуле 0

Добавлено: 11.07.2019{, 09:26}
Phazz
НовыйUser писал(а):
10.07.2019{, 23:09}
он после сработки держит единицу на выходе
А не должен.
Блок служит для обнаружения изменения состояния значения на входе с 1 на 0 и обратно. При изменении состояния на входе на выходе формируется импульс длительностью в один цикл исполнения программы
Отправлено спустя 14 минут :
Проверил блок работает как должен. Отправляет импульс при каждом изменении бита.

разовое срабатывание при нуле 0

Добавлено: 11.07.2019{, 10:20}
НовыйUser
Phazz писал(а):
11.07.2019{, 09:40}
Проверил блок работает как должен. Отправляет импульс при каждом изменении бита.
т.е если зажать кнопку на его входе он разово сработает и отключиться или будет пропускать нажатое состояние ?

разовое срабатывание при нуле 0

Добавлено: 11.07.2019{, 10:26}
Phazz
При нажатии импульс при отпускании еще импульс. Пока удерживаешь кнопку ничего не будет происходить.

разовое срабатывание при нуле 0

Добавлено: 11.07.2019{, 10:31}
НовыйUser
Смысл был таков чтобы постоянную единицу пропустить 1 раз. Следующий разовый проход единицы только после ее отключения и повторного включения. Это первый сценарий. Далее второй сценарий аналогичный первому но уже там вместо единицы ноль необходимо пропускать разово. Плюс к этому сценарии взаимоисключены так как выходят оба на серво в конце цепочки событий :)

разовое срабатывание при нуле 0

Добавлено: 11.07.2019{, 10:34}
Berserker
ну задай сразу при включении переменную и меняй один раз, либо массив в него пиши один раз и потом только читай с него.

разовое срабатывание при нуле 0

Добавлено: 11.07.2019{, 10:41}
Phazz
НовыйUser писал(а):
11.07.2019{, 10:31}
Смысл был таков чтобы постоянную единицу пропустить 1 раз. Следующий разовый проход единицы только после ее отключения и повторного включения
Ну это вы описали работу блока Rtrig

Отправлено спустя 1 минуту 20 секунд:
А вот про взаимоисключения сценариев я не совсем понял.

разовое срабатывание при нуле 0

Добавлено: 11.07.2019{, 16:06}
aidar_i
Rtrig и Rtrig с инверсией + блоки and.

разовое срабатывание при нуле 0

Добавлено: 11.07.2019{, 17:07}
Sancho
aidar_i писал(а):
11.07.2019{, 16:06}
Rtrig с инверсией
Можно использовать, но важно помнить, что если при включении питания мк на его, Rtrig, входе будет 0 - он отработает, хотя, фактически, перехода из 1 в 0 не было.

разовое срабатывание при нуле 0

Добавлено: 11.07.2019{, 19:57}
aidar_i
Rtrig с инверсией отработает при включении, но можно его выход через and и bounce заблокировать.