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

Выполнение кода платы по условию

Добавлено: 11.05.2017{, 13:11}
vovka1973
support писал(а):Проектик можно увидеть?
Я с телефона на компе нет интернета,пока так у меня продублировал смену переменной вне платы и внутри платы так работает.
Так .получается в не платы надо переменную менять чтобы в цикл вошел ,а из платы с циклом менять переменную что бы выйти ,фух вроде разобрался.

Выполнение кода платы по условию

Добавлено: 12.05.2017{, 11:02}
DrMario
vovka1973 писал(а):Это если выбрал выполнение по условию ,а если выбрать выполнять в цикле пока -как потом выйти из этого цикла уже голову сломал
Посмотрите повнимательнее мой пример.
Изначально работает программа первой платы, с которой можно включать другие фрагменты (платы).
Если на первой плате на вход Sel подать 2, то будет выполнятся фрагмент кода третьей платы (Режим 2), а плата 2 (Режим 1) будет бездействовать. Все это буде выполнятся, пока переменная Режим 2 не станет false. Точнее когда на вход En переменной Режим 2 не поступит уровень лог. 1.
Для примера я поставил таймер на 20 сек. в данном примере. Уже в самой плате Режим 2 можно по команде или как в примере отключать выполнение кода. После отключения будет снова исполнятся только плата 1.

Выполнение кода платы по условию

Добавлено: 13.06.2017{, 23:49}
CraCk
В первые решил использовать функцию Выполнение по условию. Но безрезультатно. Если на плате 2 не использую условия то все работает. Отладочный пин13 моргает при приеме данных. А если включить по условию тогда пин13 все время горит.

Добавлено (13.06.2017, 23:49)
---------------------------------------------
Понимаю что виной есть пол.блок. Но все же как решить проблему?

Выполнение кода платы по условию

Добавлено: 14.06.2017{, 00:10}
pan
в описании блока сказано:
- new_reception_data - импульс сигнализирующий о приеме новых данных.
я так понимаю импульс длится один цикл.
следовательно плата номер 2 выполняется 1 цикл влючив светодиод и больше не выключает его.
хотя по идее при id =3 она тоже должна обрабатываться и тушить его.
могу ошибаться.

выведите переменные sender_id и new_data_from_ID2 в ком порт и гляньте чё там.

Выполнение кода платы по условию

Добавлено: 14.06.2017{, 00:32}
Oleg_UA
CraCk писал(а):А если включить по условию тогда пин13 все время горит.
Добавьте плату перед второй для сброса значений на следующем цикле

Или добавьте плату с инверсным условием
new_reception_data не равно

можно без условия сделать или прямо в ПБ выходы добавить

Выполнение кода платы по условию

Добавлено: 14.06.2017{, 22:27}
CraCk
Oleg_UA писал(а):Добавьте плату перед второй для сброса значений на следующем цикле
Добавил, заработало. Думаю на этом варианте и остановлюсь. Другие варианты без условия будет нагружать контролер при добавление новых клиентов.  БП большой получится.
Oleg_UA писал(а):Или добавьте плату с инверсным условиемnew_reception_data не равно
Тоже работает но код большой получится.
Только почему все так извращенно получается? Из за одного импульса в цикле?

Выполнение кода платы по условию

Добавлено: 14.06.2017{, 22:49}
pan
потому что плата 1 цикл только обрабатывается. потом в ней ни чего не происходит

Выполнение кода платы по условию

Добавлено: 14.06.2017{, 23:28}
Oleg_UA
CraCk писал(а):Тоже работает но код большой получится.
Если править БП то эта операция займёт всего две строчки кода и один выход для каждого клиента, да и переменных меньше будет.

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

Выполнение кода платы по условию

Добавлено: 15.06.2017{, 14:17}
Гость
Тоже пробовал платы включать по условию , - результат не обрадовал .все равно какая то часть платы работает , а какая то нет , а в некотором случае плата полностью работает , так и не разобрсвшись бросил эту затею и сделал условие по другому ....

Выполнение кода платы по условию

Добавлено: 16.10.2017{, 10:41}
ProTV
Подскажите где ошибка?
ИзображениеИзображение

Задача, по нажатию кнопок выполнять свою плату (измерение и вывод на экран результата). Условием для выполнения платы, задал переменную, состояние переменной задаётся счётчиком от кнопок переключения. Но не работает, при старте главный экран, на кнопки не реагирует.

Выполнение кода платы по условию

Добавлено: 16.10.2017{, 11:03}
Boroda
ProTV, кнопки на +5 или на землю? Если на землю, то инверсию на LEFT и Right поставьте и подтяжку включите.

Выполнение кода платы по условию

Добавлено: 16.10.2017{, 13:10}
ProTV
Boroda писал(а):ProTV, кнопки на +5 или на землю? Если на землю, то инверсию на LEFT и Right поставьте и подтяжку включите.
Кнопки через резисторы 36кОм подтянуты на общий провод, замыкают на источник питания. То есть при нажатии высокий уровень.

Добавлено (16.10.2017, 13:10)
---------------------------------------------
Решил начать с простого :).
Добился корректного переключения, но дисплей при переключениях не отчищается (в его памяти остаётся предидущее значение).
ИзображениеИзображение

Выполнение кода платы по условию

Добавлено: 16.10.2017{, 15:15}
Dev1
Попробуйте привязаться на платах переменные условий к EN дисплея. Надеюсь понятно объяснил...

Выполнение кода платы по условию

Добавлено: 16.10.2017{, 19:20}
ProTV
Dev1 писал(а):Попробуйте привязаться на платах переменные условий к EN дисплея. Надеюсь понятно объяснил...
Не помогает, при переключении новый текст налаживается на старый. При переключении экрана, нужно похоже делать lcd.clear();
. Ещё вычитал, что для тех ячеек экрана которые не перезаписываются при смене данных, можно прописывать пробелы.

Выполнение кода платы по условию

Добавлено: 16.10.2017{, 20:54}
pan
ProTV писал(а):нужно похоже делать lcd.clear()
 естественно.
ProTV писал(а):для тех ячеек экрана которые не перезаписываются при смене данных, можно прописывать пробелы.
ну или так.

еще можно можно на 1 и 2 плате поставить вначале блоки с пустым входом D (выполнив его одноктратно например через триггер) тем самым очистится дисплей и тут же напишет то что надо

Выполнение кода платы по условию

Добавлено: 16.10.2017{, 21:11}
ProTV
pan писал(а):еще можно можно на 1 и 2 плате поставить вначале блоки с пустым входом D (выполнив его одноктратно например через триггер) тем самым очистится дисплей и тут же напишет то что надо
Если правильно понимаю, то код из платы выполняется сверху-вниз, слева на право?

Выполнение кода платы по условию

Добавлено: 03.08.2018{, 12:16}
Alias
Не так давно я уже жаловался, что при работе с шаговым двигателем в моем проекте возникали тормоза. Выход нашел в использовании условия выполнения платы "Выполнять в цикле пока".
Работает. Но только один раз. То есть плата по условию отработала, вышла из цикла, передав управление основному коду.
Однако, если плате снова передать управление, все зависает - не стартует блок шагового двигателя и плата работает в цикле.
Можно создать несколько плат с идентичными блоками, сколько раз в проекте двигатель должен отработать. Но это не выход. Что я делаю не так? Или это баг программы или блока ШД?
Если использовать блок шагового двигателя на плате без цикла, он всегда стартует нормально, правда, очень медленно работает.