Цикл

Alex Fizryk
Offline
Зарегистрирован: 26.08.2021

Если температура равна или меньше 25. Включить пин7 держать 5 секунд и выключить. Как сделать что бы цикл не повторялся до следующего заданного изменения температуры. В зависимости от изменения температуры через драйвер L298N мотор будет крутиться вперёд назад, мотор должен отработать 5 секунд и остановиться. >25. 5 секунд работает стоп больше не повторяет >35 5 работает стоп.

nik182
Offline
Зарегистрирован: 04.05.2015

Прочитайте про гестирезис. Если задать гестерезис 0.5 градуса, то после срабатывания условия по температуре повторное срабатывание  в обратную сторону будет гораздо позже 5 секунд. 5 секунд работы мотора можно обеспечит по типу blink without delay. Что бы точно обезопасить программу от повторного срабатывания условия по температуре при первом срабатывании возвести флаг работы мотора и по флагу обходить измерение температуры пока работает мотор. После отключения мотора флаг опустить. 

b707
Offline
Зарегистрирован: 26.05.2017

Alex Fizryk пишет:

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

добавить логическую переменную-флаг.

Добавляем в условие цикла, чтобы он работал только если переменная истинна. Изначально переменная 1 (true). Температура изменилась, цикл отработал - присвоили переменной false. И. пока переменная false - в цикл больше не заходим. Если температура снова изменилась - меняем переменную на true , цикл снова отрабатывает.

Alex Fizryk
Offline
Зарегистрирован: 26.08.2021

Здравствуйте. хочу сделать автоматическую подачу воздуха в карбюратор машины, (авто подсос) пробую написать скетч при прогреве двигателя мотор будет открывать заслонку 25=> 5 секунд работает мотор 40=>ещё 5 секунд работает. Но как сделать что бы мотор только раз отработал и больше не повторял условие.
Как это flag прописать

b707
Offline
Зарегистрирован: 26.05.2017

Alex Fizryk пишет:
Как это flag прописать

Правило 3х П:

пробуйте - показывайте - поправим