выполнение плат по условию
выполнение плат по условию
Приветствую коллеги. Объясните, кому не лень, как работает выполнение плат по условию и выполнять в цикле? Как этим грамотно пользоваться?
или ссылочку киньте, а то искал искал, так и не нашел...
или ссылочку киньте, а то искал искал, так и не нашел...
- Alias
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 27 ноя 2017, 13:15
- Откуда: Rus44
- Имя: Michael
- Контактная информация:
выполнение плат по условию
Мне не лень, но с телефона много не напишешь.
Выполнение плат по условию - механизм разгрузки Ардуино от ненужных в данный момент расчётов.
Допустим, у вас с десяток датчиков температуры: в котле, в бойлере, на радиаторе SSR, помещении и в подвале. Нет смысла в каждом цикле гонять код, ведь совершенно очевидно, что в подвале температура не меняется каждую секунду, зато котел лучше проверять почаще. Соответственно, сделаем опрос датчиков, скажем, каждые 1, 10, 5 секунд и 1 и 10 минут соответственно. Для этого от часов реального времени через делители частоты будем присваивать на один программный цикл единицу специальным булевым переменным с именами, допустим, 1с, 5с, 10с, 1м, 10м, а платы, где стоят датчики, а вместе с ними и вся логика, к ним относящаяся, будем выполнять по условию, что 1с= true для платы с первым датчиком и так далее. Таким образом, мы высвободим мощности для других задач.
На выполнении плат по условию можно организовать меню любой сложности, работу с дисплеями и так далее, все зависит от потребностей и фантазии.
Выполнение в цикле - это когда плата будет выполняться в цикле до бесконечности, пока выполняется условие, при этом выполняться будет только одна эта плата.
Выполнение плат по условию - механизм разгрузки Ардуино от ненужных в данный момент расчётов.
Допустим, у вас с десяток датчиков температуры: в котле, в бойлере, на радиаторе SSR, помещении и в подвале. Нет смысла в каждом цикле гонять код, ведь совершенно очевидно, что в подвале температура не меняется каждую секунду, зато котел лучше проверять почаще. Соответственно, сделаем опрос датчиков, скажем, каждые 1, 10, 5 секунд и 1 и 10 минут соответственно. Для этого от часов реального времени через делители частоты будем присваивать на один программный цикл единицу специальным булевым переменным с именами, допустим, 1с, 5с, 10с, 1м, 10м, а платы, где стоят датчики, а вместе с ними и вся логика, к ним относящаяся, будем выполнять по условию, что 1с= true для платы с первым датчиком и так далее. Таким образом, мы высвободим мощности для других задач.
На выполнении плат по условию можно организовать меню любой сложности, работу с дисплеями и так далее, все зависит от потребностей и фантазии.
Выполнение в цикле - это когда плата будет выполняться в цикле до бесконечности, пока выполняется условие, при этом выполняться будет только одна эта плата.
выполнение плат по условию
[ref=#404040]Alias[/ref], спасибо. Это то, что я себе представлял.
Теоретическое понимание есть, только на практике не получается этим воспользоваться... не работает..
Возьмем, к примеру, управление сдвижными воротами. Есть 2 кнопки, одна А открыть, другая В закрыть.
В процессе открытия необходимо остановить ворота нажатием любой кнопки, а далее, в зависимости от
потребности, либо продолжить открытие, либо включить закрытие... Я разделил алгоритм на 2 платы,
для кнопки А и для кнопки В. Вот теперь для меня самое интересное.. Не получается заставить выполнять
плату кнопки А, пока ворота открываются.. (предполагаемый алгоритм: опрос кнопок, если нажата А, то выполнение платы открытия
до сработки концевика, либо до нажатия любой кнопки для остановки.)
Мне бы понять, как в программе заложен механизм использования выполнения плат по условию, в цикле.
Теоретическое понимание есть, только на практике не получается этим воспользоваться... не работает..
Возьмем, к примеру, управление сдвижными воротами. Есть 2 кнопки, одна А открыть, другая В закрыть.
В процессе открытия необходимо остановить ворота нажатием любой кнопки, а далее, в зависимости от
потребности, либо продолжить открытие, либо включить закрытие... Я разделил алгоритм на 2 платы,
для кнопки А и для кнопки В. Вот теперь для меня самое интересное.. Не получается заставить выполнять
плату кнопки А, пока ворота открываются.. (предполагаемый алгоритм: опрос кнопок, если нажата А, то выполнение платы открытия
до сработки концевика, либо до нажатия любой кнопки для остановки.)
Мне бы понять, как в программе заложен механизм использования выполнения плат по условию, в цикле.
- Alias
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 27 ноя 2017, 13:15
- Откуда: Rus44
- Имя: Michael
- Контактная информация:
выполнение плат по условию
Мне кажется, что в данном случае городить огород из плат по условию нет никакого резона, не тот масштаб. Тут все реализуется простой логикой. Я по-прежнему с телефона, бука под рукой нет, чтобы накидать наглядно.
Смысл использования выполнения плат возникает, если в программе много тяжёлых задач. Например, у меня в проекте на Меге более сотни переменных, пять свободных пинов и чтобы ардуинка нормально это переваривала, использовал полтора десятка флагов для выполнения конкретных плат.
Например, дисплей 5110 отображает информацию в 6 строках и 14 столбцах, это, насколько понял, достаточно тяжёлое занятие. Поэтому генерация текста со множеством манипуляций в дежурном режиме происходит только один раз в шесть секунд, как и обновление экрана. Чаще и не нужно.
Сложный блок пересчёта уставок выполняется один раз в час, суточная аналитика - только в полночь, опросы датчиков - три разных интервала, и так далее.
Постоянно крутятся только две платы: RTC и генератор синхроимпульсов на его основе для работы плат по условию, у ecoins это называется Диспетчер задач, и мониторинг клавиатуры.
Смысл использования выполнения плат возникает, если в программе много тяжёлых задач. Например, у меня в проекте на Меге более сотни переменных, пять свободных пинов и чтобы ардуинка нормально это переваривала, использовал полтора десятка флагов для выполнения конкретных плат.
Например, дисплей 5110 отображает информацию в 6 строках и 14 столбцах, это, насколько понял, достаточно тяжёлое занятие. Поэтому генерация текста со множеством манипуляций в дежурном режиме происходит только один раз в шесть секунд, как и обновление экрана. Чаще и не нужно.
Сложный блок пересчёта уставок выполняется один раз в час, суточная аналитика - только в полночь, опросы датчиков - три разных интервала, и так далее.
Постоянно крутятся только две платы: RTC и генератор синхроимпульсов на его основе для работы плат по условию, у ecoins это называется Диспетчер задач, и мониторинг клавиатуры.
выполнение плат по условию
это проще всего... тут как раз не сложный код хочется реализовать с условиями и циклом, чтобы понять, как это работает.Alias писал(а): 09 фев 2020, 13:00 Мне кажется, что в данном случае городить огород из плат по условию нет никакого резона, не тот масштаб. Тут все реализуется простой логикой.
Я понять хочу.... а ВЫ, коллега, меня отговариваете..)))
Отправлено спустя 1 минуту 23 секунды:
...понять, как работает в flprog.
- Alias
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 27 ноя 2017, 13:15
- Откуда: Rus44
- Имя: Michael
- Контактная информация:
выполнение плат по условию
Хорошо. Пишите, коллега )))
На первой плате ставим генератор импульсов - симметричный мультивибратор или как там, скажем, на 1Гц. Нет, мало, давайте пятьсот мс. За ним - счетчик, пишущий текущее значение в переменную.
На второй плате берём эту переменную, конвертируем число в текст, выводим на дисплей или в uart, как удобнее.
Запускаем. Что происходит? Верно, число увеличивается.
Теперь возвращаемся к первой плате, ставим условие Выполнять в цикле, пока переменная меньше десяти.
Запускаем. Что видим? А выводы?
Для таких опытов можно иметь специальную Nano на шнурке usb, чтобы при любом сомнении накидать схемку и проверить корректность ее работы. Я так отлаживаю отдельные блоки из своих проектов, чтобы доподлинно знать, что там происходит. Визуализация через дисплей или uart. Без подобного рода техоснастки можно даже в простых проектах в тупик зайти.
На первой плате ставим генератор импульсов - симметричный мультивибратор или как там, скажем, на 1Гц. Нет, мало, давайте пятьсот мс. За ним - счетчик, пишущий текущее значение в переменную.
На второй плате берём эту переменную, конвертируем число в текст, выводим на дисплей или в uart, как удобнее.
Запускаем. Что происходит? Верно, число увеличивается.
Теперь возвращаемся к первой плате, ставим условие Выполнять в цикле, пока переменная меньше десяти.
Запускаем. Что видим? А выводы?
Для таких опытов можно иметь специальную Nano на шнурке usb, чтобы при любом сомнении накидать схемку и проверить корректность ее работы. Я так отлаживаю отдельные блоки из своих проектов, чтобы доподлинно знать, что там происходит. Визуализация через дисплей или uart. Без подобного рода техоснастки можно даже в простых проектах в тупик зайти.
выполнение плат по условию
//del
Последний раз редактировалось Rodgerask 12 фев 2020, 23:41, всего редактировалось 1 раз.
-
- Полковник
- Сообщения: 1928
- Зарегистрирован: 28 окт 2015, 22:47
- Откуда: Ленобласть
- Имя: Игорь
- Поблагодарили: 2 раза
выполнение плат по условию
Проект в 6.2.2
Так Вы быстрее поймете как это работает.
Если нет возможности/желания использовать последние версии
[spoiler] [/spoiler]
Подключите, нажимайте 2-ве кнопки в различных комбинациях, смотрите в СОМ порт и наблюдайте светодиод на плате.Так Вы быстрее поймете как это работает.
Если нет возможности/желания использовать последние версии
[spoiler] [/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
выполнение плат по условию
[ref=#404040]Alias[/ref], спасибо very much.. понял примерно... осталось на практике закрепить..))
[ref]Ingwar[/ref], спасибо за пример..)
[ref]Ingwar[/ref], спасибо за пример..)
-
- Подполковник
- Сообщения: 1202
- Зарегистрирован: 14 фев 2016, 14:16
- Откуда: kazahstan
- Благодарил (а): 32 раза
- Поблагодарили: 6 раз
выполнение плат по условию
что именно поняли ?по логике нажимаете на кнопку А выполняется условие где можно нажать кнопку В ,нажимаем кнопку В выполняется условие где работает счетчик ,но отпускаем кнопку А по идеи счетчик должен перестать работать так как условие В должно перестать работать ,а счетчик работает пока не отпустим кнопку А и опять ее нажмем. Я вот так и не понял почему так работают условия если с одной платой все хорошо то с двумя и более ерунда какая-то

Последний раз редактировалось vovka1973 09 фев 2020, 17:53, всего редактировалось 2 раза.
- Alias
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 27 ноя 2017, 13:15
- Откуда: Rus44
- Имя: Michael
- Контактная информация:
выполнение плат по условию
От меня примеров не ждите, я с градусником и на пилюлях, в доступности только телефон. Впрочем, я уже об этом дважды упомянул, молчаливо извинившись.
Требую? И где же? Хотелось бы подтверждения Ваших слов. Да хоть в ЛС.Rodgerask писал(а): 09 фев 2020, 16:52 Очень много текста.... и нет ни примера ни проекта...хотя от вас всегда так.
Слишком все голословно выглядит...НЕНАГЛЯДНО что-ли...причем вы то сами требуете этого от других.
выполнение плат по условию
//del
Последний раз редактировалось Rodgerask 12 фев 2020, 23:41, всего редактировалось 1 раз.
- Alias
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 27 ноя 2017, 13:15
- Откуда: Rus44
- Имя: Michael
- Контактная информация:
выполнение плат по условию
Не нашлось? Тогда просим модераторов удалить флуд?
PS Vladislaveu это не Ваш второй ник? Вернее первый, он же старше на полчаса. И ID пользователя соседний. Да и почерк тот же.
PS Vladislaveu это не Ваш второй ник? Вернее первый, он же старше на полчаса. И ID пользователя соседний. Да и почерк тот же.
выполнение плат по условию
[ref]vovka1973[/ref], вы попробуйте на пальцах или карандашом на листке.
Переменная А становится true когда нажимаем кнопку А.
Переменная Б становится true когда нажимаем кнопку Б, при условии, что переменная А true.
Ну со счётчиком там всё понятно, плата заработала и счётчик начал считать.
Теперь отпускаем кнопку А. Переменная А стала false. А переменная Б - ?
А если отпустить кнопку Б, это как-то повлияет на переменную Б?
Дальше думаю сами разберётесь.
Переменная А становится true когда нажимаем кнопку А.
Переменная Б становится true когда нажимаем кнопку Б, при условии, что переменная А true.
Ну со счётчиком там всё понятно, плата заработала и счётчик начал считать.
Теперь отпускаем кнопку А. Переменная А стала false. А переменная Б - ?
А если отпустить кнопку Б, это как-то повлияет на переменную Б?
Дальше думаю сами разберётесь.
выполнение плат по условию
У меня вот так:
каждая плата это один девайс/функция
каждой плате есть свой bool=EnPlata1
управление функциями из меню bool(true/false)
Меню выбирает какую функцию активировать (true), меняя значение EnPlata1=true - нужная плата стартует. Профит. Нужно выключить или включить плату - для этого есть набор булевых переменных.
каждая плата это один девайс/функция
каждой плате есть свой bool=EnPlata1
управление функциями из меню bool(true/false)
Меню выбирает какую функцию активировать (true), меняя значение EnPlata1=true - нужная плата стартует. Профит. Нужно выключить или включить плату - для этого есть набор булевых переменных.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Подполковник
- Сообщения: 1202
- Зарегистрирован: 14 фев 2016, 14:16
- Откуда: kazahstan
- Благодарил (а): 32 раза
- Поблагодарили: 6 раз
выполнение плат по условию
то есть вы хотите сказать это правильно скетч работает ? я отпускаю кнопку А переменная В становиться false и плата где переменная В true все равно работает счетчик ? на пальцах я думал так при отпускании кнопки А выполняется сброс всех плат в false так как В становиться false. А это не так и если делать так логику где нужно соблюсти правило что бы сработало то с начало отпускаем кнопку В потом кнопку А ,а как же защита от дураков которые правило не знают ?
Отправлено спустя 3 минуты 41 секунду:
у вас плата срабатывает один раз и нет зависимости следующей платы от предыдущей как в том примере.
выполнение плат по условию
Условие, для того, чтобы переменная Б стала false есть только одно - отпускание кнопки Б. То, что переменная А стала false только прекращает выполнение второй платы и не более. А по сути получается, что переменная Б просто защёлкнулась. И теперь, отпустив кнопку Б, мы можем наблюдать как работает счётчик. НО, если при отпущенной кнопке Б нажать на А, то переменная Б сразу станет false, так как разблокируется возможность её изменения.vovka1973 писал(а): 10 фев 2020, 03:43 я думал так при отпускании кнопки А выполняется сброс всех плат в false так как В становиться false. А это не так и если делать так логику где нужно соблюсти правило что бы сработало то с начало отпускаем кнопку В потом кнопку А ,а как же защита от дураков которые правило не знают ?
Про защиту от дураков не совсем понял.
-
- Подполковник
- Сообщения: 1202
- Зарегистрирован: 14 фев 2016, 14:16
- Откуда: kazahstan
- Благодарил (а): 32 раза
- Поблагодарили: 6 раз
выполнение плат по условию
Я понял про что вы. Просто после отпускания кнопки А потом кнопки Б плата все равно считает пока не выполнить условие с начало опускаем кнопку В потом А, думаю просто так нельзя делать изначально будут не понятки в сложном скетче
выполнение плат по условию
Тут уже решать тому, кто делает так. Для одних это "баг", для других "фича".vovka1973 писал(а): 10 фев 2020, 04:45 думаю просто так нельзя делать изначально будут не понятки в сложном скетче
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость