появилисьпроблемы с логикой
- Войдите на сайт для отправки комментариев
Приветствую всех кто откликнулся!!
развлекаюсь с ардуиной давненько уже, разные штуки пробовал и вот то ли я устал и недогадываюсь , то ли отупел на работе своей физической.
в чем суть включаю/выключаю реле задача вся на милис, как работает понимаю а вот логику как обработать не соображу. И так к сути :
1) есть условие А, которое выключает реле
2) начинаем считать, спустя допустим 10 минут как выключилось реле
3) нужно включить реле на 1 минуту например
if (t >= a){ // 1) если t больше или равно a то: relmotor_flag = false; // Выключаем реле motor_flag = false; // Выводим флаг работы реле в стоп //__________________________________не работает_________________________________ if (Refresh + RefreshPeriod < millis()){ // 2) если прошло 10 минут relmotor_flag = true; // включаем реле Serial.println("Refresh start______________________________________________"); if(RefreshTime + RefreshTimePeriod < millis()){ // 3) если прошла 1 минута relmotor_flag = false; // включаем реле Serial.println("Refresh wait_____________________________________________________________________________________________"); Refresh = millis(); // обнуляем время в переменных для следующего цикла программы RefreshTime = millis(); } }
к сожалению я не находил среду разработки в которой можно по шагам посмотреть как будет выполняться программа, как когда то в турбо делфи я в технаре делал, поэтому вписал комментарии в монитор порта что бы выводились, так вот я вижу в мониторе оба этих комментария которые выполняются с частотой выполнения программы несколько раз в секунду по моему .
пока я не начал использовать флаг и просто менял значение на пине ардуины у меня реле истерично щелкало, благо то что реле не успевало включаться с такой частотой, но и реле это не продлевало жизнь. избежал этого изменением состояния флага, а в конце программы уже в зависимости от состояния флага присваивал значение пину.
я подозреваю что пункт №3 выполняется сразу потому что запуск этого всего происходит грубо говоря в рандомное время , видимо я не в нужный момент обновляю в переменных значение с millis()
Не нужно вносить одно в условие в другое.
Напишите их одно под другим, а дополнительным условием активации рассматривайте состояние флага.
if (flag1 == false && (Period1 < millis() - Time1)) { flag2 = false; flag1 = true;… }
if (flag2 == false && (Period2 < millis() - Time2)) { flag3 = false; flag2 = true;… }
Вряд ли это условие когда-нибудь будет истинным, т.к. millis с начала выполнения кода ,первый раз , скорее всего будет меньше 10мин
( это лишь мнение новичка...)) )
------------------
P.S. Виноват, здесь всё как раз верно. Видимо позднее время сказалось))
Да, если это проблемы то что тогда катастрофа?
спасибо кажется понял
Да, если это проблемы то что тогда катастрофа?
катастрофа в том, что у меня сенсор DHT22(AM2302) отваривается и выдает значение "NAN" которое обработать не могу, оно не в стринг переменную не записывается некак не обрабатывается и поэтому условие некоторое не получается выполнить,NAN как я понял избиблиотеки адафрут это "нечего" т.е. даже не ноль и логические операторы не могут это показание обработать, а суть то катастрофы в том что я сменил сенсор припаял к нему сам резистор и на расстоянии пары метров он работает а вот на расстоянии 20 метров от дома в котельную он сначала изредка отваливается, а затем совсем пропадает пока на долго время не выключить питание( питание отдельное на него идёт 5в минус с ардуиной связан, пин на который он подключен менял) сделать не знаю уже что, вывод у меня остался один что проблема в кабеле или в ардуине , но вроде как работает у остальных на большем расстоянии по ютипихе у меня кинута 6категория легранд кабель дорогой качественный
NAN-это обычно not a number-ошибка передачи типа данных в некоторых языках, в адафруте не знаю. А длинный провод - длинные проблемы об этом в ТОЭ пишут, правда в ВУЗах.
[/quote]
а суть то катастрофы в том что я сменил сенсор припаял к нему сам резистор и на расстоянии пары метров он работает а вот на расстоянии 20 метров от дома в котельную он сначала изредка отваливается, а затем совсем пропадает
[/quote]
Так надо просто уменьшить сопротивление подтягивающего резистора или увеличить диаметр провода.Это типичная проблема для 1-wire шины.
А по поводу котельной , то в ней должны автоматикой заниматься исключительно соответствующие специалисты, иначе "б-бах" может быть. ( говорю это как работавший в этой области)
NAN-это обычно not a number-ошибка передачи типа данных в некоторых языках, в адафруте не знаю. А длинный провод - длинные проблемы об этом в ТОЭ пишут, правда в ВУЗах.
NAN-это обычно not a number-ошибка передачи типа данных так и есть но провод нетакой длинны1й что бы не работало спрашивал на форуме, работает и на больших расстояниях
а суть то катастрофы в том что я сменил сенсор припаял к нему сам резистор и на расстоянии пары метров он работает а вот на расстоянии 20 метров от дома в котельную он сначала изредка отваливается, а затем совсем пропадает
[/quote]
Так надо просто уменьшить сопротивление подтягивающего резистора или увеличить диаметр провода.Это типичная проблема для 1-wire шины.
А по поводу котельной , то в ней должны автоматикой заниматься исключительно соответствующие специалисты, иначе "б-бах" может быть. ( говорю это как работавший в этой области)
[/quote]
у меня котел ТТ самодельный работает исправно но на механике, а она медленная из за инерциоррости , цифровой формат дорог, поэтому делаю на ардуине, обязательно есть 3 варианта защиты от перегрева котла что бы если что то пойдёт не так всё равно перестанет нагревать
а суть то катастрофы в том что я сменил сенсор припаял к нему сам резистор и на расстоянии пары метров он работает а вот на расстоянии 20 метров от дома в котельную он сначала изредка отваливается, а затем совсем пропадает
[/quote]
Так надо просто уменьшить сопротивление подтягивающего резистора или увеличить диаметр провода.Это типичная проблема для 1-wire шины.
А по поводу котельной , то в ней должны автоматикой заниматься исключительно соответствующие специалисты, иначе "б-бах" может быть. ( говорю это как работавший в этой области)
[/quote]
уменьшеить резистр просто у меня стоит подстроечный, а естьматематическая какая от пропорция или сугубо методом тыка?
кабель сечение увеличить тоже могу, спасибо за совет буду пробовать в выходные
естьматематическая какая от пропорция или сугубо методом тыка?
Методом тыка вернее. )) Уменьшать на 1-2кОм постепенно, пока не заработает.
До 5кОм можно уменьшать смело.
естьматематическая какая от пропорция или сугубо методом тыка?
Методом тыка вернее. )) Уменьшать на 1-2кОм постепенно, пока не заработает.
До 5кОм можно уменьшать смело.
понял спасибо
в интернетах нашел такую инфу:
"
естьматематическая какая от пропорция или сугубо методом тыка?
Методом тыка вернее. )) Уменьшать на 1-2кОм постепенно, пока не заработает.
До 5кОм можно уменьшать смело.
сдеда 5кОм пока что работает без проблем, спасибо за помощь пол года с этой проблемой жил