Страница 1 из 1
					
				выполнение плат по условию
				Добавлено: 08 фев 2020, 20:23
				 evgen23
				Приветствую коллеги. Объясните, кому не лень, как работает выполнение плат по условию и выполнять в цикле? Как этим грамотно пользоваться? 
или ссылочку киньте, а то искал искал, так и не нашел...
			 
			
					
				выполнение плат по условию
				Добавлено: 08 фев 2020, 21:09
				 Alias
				Мне не лень,  но с телефона много не напишешь. 
Выполнение плат по условию - механизм разгрузки Ардуино от ненужных в данный момент расчётов.
Допустим, у вас с десяток датчиков температуры: в котле, в бойлере, на радиаторе SSR, помещении и в подвале. Нет смысла в каждом цикле гонять код, ведь совершенно очевидно, что в подвале температура не меняется каждую секунду, зато котел лучше проверять почаще. Соответственно, сделаем опрос датчиков, скажем, каждые 1, 10, 5 секунд и 1 и 10 минут соответственно. Для этого от часов реального времени через делители частоты будем присваивать на один программный цикл единицу специальным булевым переменным с именами, допустим, 1с, 5с, 10с, 1м, 10м, а платы, где стоят датчики, а вместе с ними и вся логика, к ним относящаяся, будем выполнять по условию, что 1с= true для платы с первым датчиком и так далее. Таким образом, мы высвободим мощности для других задач.
На выполнении плат по условию можно организовать меню любой сложности, работу с дисплеями и так далее, все зависит от потребностей и фантазии.
Выполнение в цикле - это когда плата будет выполняться в цикле до бесконечности, пока выполняется условие, при этом выполняться будет только одна эта плата.
			 
			
					
				выполнение плат по условию
				Добавлено: 09 фев 2020, 12:20
				 evgen23
				[ref=#404040]Alias[/ref], спасибо. Это то, что я себе представлял. 
Теоретическое понимание есть, только на практике не получается этим воспользоваться... не работает.. 
Возьмем, к примеру, управление сдвижными воротами. Есть 2 кнопки, одна А открыть, другая В закрыть. 
В процессе открытия необходимо остановить ворота нажатием любой кнопки, а далее, в зависимости от 
потребности, либо продолжить открытие, либо включить закрытие... Я разделил алгоритм на 2 платы, 
для кнопки А и для кнопки В. Вот теперь для меня самое интересное.. Не получается заставить выполнять 
плату кнопки А, пока ворота открываются.. (предполагаемый алгоритм: опрос кнопок, если нажата А, то выполнение платы открытия 
до сработки концевика, либо до нажатия любой кнопки для остановки.)
Мне бы понять, как в программе заложен механизм использования выполнения плат по условию, в цикле.
			 
			
					
				выполнение плат по условию
				Добавлено: 09 фев 2020, 13:00
				 Alias
				Мне кажется, что в данном случае городить огород из плат по условию нет никакого резона, не тот масштаб. Тут все реализуется простой логикой. Я по-прежнему с телефона, бука под рукой нет, чтобы накидать наглядно.
Смысл использования выполнения плат возникает, если в программе много тяжёлых задач. Например, у меня в проекте на Меге более сотни переменных, пять свободных пинов и чтобы ардуинка нормально это переваривала, использовал полтора десятка флагов для выполнения конкретных плат.
Например, дисплей 5110 отображает информацию в 6 строках и 14 столбцах, это, насколько понял, достаточно тяжёлое занятие. Поэтому генерация текста со множеством манипуляций в дежурном режиме происходит только один раз в шесть секунд, как и обновление экрана. Чаще и не нужно.
Сложный блок пересчёта уставок выполняется один раз в час, суточная аналитика - только в полночь, опросы датчиков - три разных интервала, и так далее. 
Постоянно крутятся только две платы: RTC и генератор синхроимпульсов на его основе для работы плат по условию, у ecoins это называется Диспетчер задач, и мониторинг клавиатуры.
			 
			
					
				выполнение плат по условию
				Добавлено: 09 фев 2020, 15:35
				 evgen23
				Alias писал(а): 09 фев 2020, 13:00
Мне кажется, что в данном случае городить огород из плат по условию нет никакого резона, не тот масштаб. Тут все реализуется простой логикой.
 
это проще всего... тут как раз  не сложный код хочется реализовать с условиями и циклом, чтобы понять, как это работает.
Я понять хочу.... а ВЫ, коллега, меня отговариваете..)))
Отправлено спустя     1 минуту 23 секунды:
...понять, как работает в flprog.
 
			
					
				выполнение плат по условию
				Добавлено: 09 фев 2020, 15:54
				 Alias
				Хорошо. Пишите, коллега )))
На первой плате ставим генератор импульсов - симметричный мультивибратор или как там, скажем, на 1Гц. Нет, мало, давайте пятьсот мс. За ним - счетчик, пишущий текущее значение в переменную.
На второй плате берём эту переменную, конвертируем число в текст, выводим на дисплей или в uart, как удобнее.
Запускаем. Что происходит? Верно, число увеличивается.
Теперь возвращаемся к первой плате, ставим условие Выполнять в цикле, пока переменная меньше десяти.
Запускаем. Что видим? А выводы?
Для таких опытов можно иметь специальную Nano на шнурке usb, чтобы при любом сомнении накидать схемку и проверить корректность ее работы. Я так отлаживаю отдельные блоки из своих проектов, чтобы доподлинно знать, что там происходит. Визуализация через дисплей или uart. Без подобного рода техоснастки можно даже в простых проектах в тупик зайти.
			 
			
					
				выполнение плат по условию
				Добавлено: 09 фев 2020, 16:52
				 Rodgerask
				//del
			 
			
					
				выполнение плат по условию
				Добавлено: 09 фев 2020, 17:15
				 Ingwar
				Проект в 6.2.2
условия_платы.flp
Подключите, нажимайте 2-ве кнопки в различных комбинациях, смотрите в СОМ порт и наблюдайте светодиод на плате.
Так Вы быстрее поймете как это работает.
Если нет возможности/желания использовать последние версии
[spoiler] 
Безымянный.png
[/spoiler]
 
			
					
				выполнение плат по условию
				Добавлено: 09 фев 2020, 17:34
				 evgen23
				[ref=#404040]Alias[/ref], спасибо very much.. понял примерно... осталось на практике закрепить..))
[ref]Ingwar[/ref], спасибо за пример..)
			 
			
					
				выполнение плат по условию
				Добавлено: 09 фев 2020, 17:42
				 vovka1973
				evgen23 писал(а): 09 фев 2020, 17:34
понял примерно...
 
что именно поняли ?по логике нажимаете на кнопку А выполняется условие где можно нажать кнопку В ,нажимаем кнопку В выполняется условие где работает счетчик ,но отпускаем кнопку А по идеи счетчик должен перестать работать так как условие В должно перестать работать  ,а счетчик  работает пока не отпустим кнопку А и опять ее нажмем. Я вот так и не понял почему так работают условия если с одной платой все хорошо то с двумя и более ерунда какая-то  

 
			
					
				выполнение плат по условию
				Добавлено: 09 фев 2020, 17:46
				 Alias
				От меня примеров не ждите, я с градусником и на пилюлях, в доступности только телефон. Впрочем, я уже об этом дважды упомянул, молчаливо извинившись.
Rodgerask писал(а): 09 фев 2020, 16:52
Очень много текста.... и нет ни примера ни проекта...хотя от вас всегда так.
Слишком все голословно выглядит...НЕНАГЛЯДНО что-ли...причем вы то сами требуете этого от других.
 
Требую? И где же? Хотелось бы подтверждения Ваших слов. Да хоть в ЛС.
 
			
					
				выполнение плат по условию
				Добавлено: 09 фев 2020, 18:13
				 Rodgerask
				//del
			 
			
					
				выполнение плат по условию
				Добавлено: 09 фев 2020, 18:27
				 Alias
				Не нашлось? Тогда просим модераторов удалить флуд?
PS Vladislaveu это не Ваш второй ник? Вернее первый, он же старше на полчаса. И ID пользователя соседний. Да и почерк тот же.
			 
			
					
				выполнение плат по условию
				Добавлено: 09 фев 2020, 19:36
				 edyapd
				[ref]vovka1973[/ref], вы попробуйте на пальцах или карандашом на листке.
Переменная А становится true когда нажимаем кнопку А. 
Переменная Б становится true когда нажимаем кнопку Б, при условии, что переменная А true.
Ну со счётчиком там всё понятно, плата заработала и счётчик начал считать.
Теперь отпускаем кнопку А. Переменная А стала false. А переменная Б - ?
А если отпустить кнопку Б, это как-то повлияет на переменную Б?
Дальше думаю сами разберётесь.
			 
			
					
				выполнение плат по условию
				Добавлено: 09 фев 2020, 23:45
				 Iqubik
				У меня вот так:
каждая плата это один девайс/функция
каждой плате есть свой bool=EnPlata1
управление функциями из меню bool(true/false)
Меню выбирает какую функцию активировать (true), меняя значение EnPlata1=true - нужная плата стартует. Профит. Нужно выключить или включить плату - для этого есть набор булевых переменных.
			 
			
					
				выполнение плат по условию
				Добавлено: 10 фев 2020, 03:43
				 vovka1973
				edyapd писал(а): 09 фев 2020, 19:36
вы попробуйте на пальцах или карандашом на листке.
 
то есть вы хотите сказать это правильно скетч работает ? я отпускаю кнопку А переменная В становиться false и плата где переменная В true все равно работает счетчик ? на пальцах я думал так при отпускании кнопки А выполняется сброс всех плат  в false так как В становиться false. А это не так и если делать так логику где нужно соблюсти правило что бы сработало то с начало отпускаем кнопку В потом кнопку А ,а как же защита от дураков которые правило не знают ?
Отправлено спустя     3 минуты 41 секунду:
Iqubik писал(а): 09 фев 2020, 23:45
У меня вот так:
 
у вас плата срабатывает один раз и нет зависимости следующей платы от предыдущей как в том примере.
 
			
					
				выполнение плат по условию
				Добавлено: 10 фев 2020, 04:22
				 edyapd
				vovka1973 писал(а): 10 фев 2020, 03:43
я думал так при отпускании кнопки А выполняется сброс всех плат в false так как В становиться false. А это не так и если делать так логику где нужно соблюсти правило что бы сработало то с начало отпускаем кнопку В потом кнопку А ,а как же защита от дураков которые правило не знают ?
 
Условие, для того, чтобы переменная Б стала false есть только одно - отпускание кнопки Б. То, что переменная А стала false только прекращает выполнение второй платы и не более. А по сути получается, что переменная Б просто защёлкнулась. И теперь, отпустив кнопку Б, мы можем наблюдать как работает счётчик. НО, если при отпущенной кнопке Б нажать на А, то переменная Б сразу станет false, так как разблокируется возможность её изменения.
Про защиту от дураков не совсем понял.
 
			
					
				выполнение плат по условию
				Добавлено: 10 фев 2020, 04:45
				 vovka1973
				Я понял про что вы. Просто после отпускания кнопки А потом кнопки Б плата все равно считает пока не выполнить условие с начало опускаем кнопку В потом А, думаю просто так нельзя делать изначально будут не понятки в сложном скетче
			 
			
					
				выполнение плат по условию
				Добавлено: 10 фев 2020, 06:44
				 edyapd
				vovka1973 писал(а): 10 фев 2020, 04:45
думаю просто так нельзя делать изначально будут не понятки в сложном скетче
 
Тут уже решать тому, кто делает так. Для одних это "баг", для других "фича".