Поймите, от подключения зависит очень много, особенно для контроля трёх фаз. Если подключено без фильтра, то на входе мы имеем импульсы длиной 10 миллисекунд и сважностью 2, со сдвигом фаз 20мс/3 = 6.(6) мс. Если нужно отслеживать только отключение напряжения, то на входе ставят выпрямители с RC фильтрами и постоянная времени фильтра выпрямителя определяет с какой скоростью устройство реагирует на отключение напряжения. Зато второй способ хорошо подходит для устройств учёта времени отсутствия напряжения. Соответственно подходы к программированию совершенно разные. Ваши 0 и 1 соответствуют есть - нет напряжение или 10 мс инпульсам?
пытаюсь посчитать время пока нет фазы . Пока получается только с помощью while. Интересно наверное пока считает то остальной код не выполняется? Или нет .
И можно ли для трех фаз так применить
int a,b,c;
unsigned long time_A;
unsigned long timer1 =0;
unsigned long timer2 =0;
unsigned long timer3 =0;
void setup() {
pinMode(5, INPUT);
pinMode(6,INPUT);
pinMode(7,INPUT);
Serial.begin(9600);
/*
if (pulseIn(5, HIGH, 5000000L) == 0) { // если нет напряжения на фазе 5 секунд пишет ошибку и пытается начать сначала.
Serial.print("A Fail");
return;
}
if (pulseIn(6, HIGH, 5000000L) == 0) { // если нет напряжения на фазе 5 секунд пишет ошибку и пытается начать сначала.
Serial.print("A Fail");
return;
}
if (pulseIn(7, HIGH, 5000000L) == 0) { // если нет напряжения на фазе 5 секунд пишет ошибку и пытается начать сначала.
Serial.print("A Fail");
return;
}*/
}
void loop(){
while (digitalRead(5) ==HIGH)
{timer2 = millis()/1000;
a=1;}
while (digitalRead(5) ==LOW)
{timer1 = millis()/1000;
b=1;}
if (a==1 && b==1 ){
timer3 = timer1 - timer2;
Serial.println(timer1);
Serial.println(timer2);
Serial.println(timer3);
a=0;
b=0;
}
}
Отлично. Тогда следующий вопрос - что надо получить? Полное время отключения по фазам для одного отключения? Суммарное время отключения по фазам если отключений несколько за определённый отрезок времени? Выдать ошибку , если отключение больше 5 секунд и потом выдать полное время отключения фазы? Могу придумать ещё много вариантов реакции программы на изменения уровня сигналов на входах 5,6,7.
пытаюсь посчитать время пока нет фазы . Пока получается только с помощью while. Интересно наверное пока считает то остальной код не выполняется? Или нет .
И можно ли для трех фаз так применить
Пока выполняется while, остальной код ждет. Поэтому для трех фаз так работать не будет.
вам же выше вроде обьяснили, как считать время отсутсвия фазы. В чем опять проблема-то? Снова ждете, пока вам готовый код напишут?
1.Когда пропала фаза - начинаете считать время.
2. Когда время превысить 5 сек - выводите предупреждение.
3. Как фаза вернулась обратно - выводите прошедшее время.
Пункты 1 и 2 вам уже помогли написать. Неужели так трудно написать п3 по аналогии с п2?
Вас это чудо тупо уже третий день разводит на код.
Не ведитесь.
Сам он написал ровно ноль целых ноль десятых и даже не пытается въехать в тему, ему это не надо , ему нужен код
== никак. Да и не нужно этого делать. Вы когда время на часах засекаете - вы их обнуляете разве? - нет, просто запоминаете текущее время. Вот и тут точно также - просто запоминайте значение миллис
Цитата:
2-запустить по событию.
=== опять не нужно. Таймер миллис запущен всегда и уже тикает, опять же как часы на руке
Цитата:
3- остановить по событию.
=== и в третий раз мимо. Не надо останавливать. Смотрите на время - и вычитаете из него значение, запомненое в п1.
Ваша ошибка - вы воспринимаете таймер, как секундомер, который надо запускать и останавливать. Это неверно. Вместо этого используйте аналогию с обычными часами.
Да Вы правы поэтому и не могу толком понять. Нужны хоть какие то примеры.
возьмите пример с вокзальными часами. На вокзальные часы вы никак не можете повлиять - не можете их пускать и останавливать, менять время. Но это абсолютно не мешает засечь по часам хоть 10 минут. хоть 2 часа.
Или, например, решить задачу - Сколько минут прошло от ухода электрички до прихода скорого поезда? - ведь это просто. не так ли?
А теперь замените уход электрички на пропадение фазы. а приход поезда - на появление - вы получите алгоритм измерения нужного вам отрезка.
Деда, по мне так это лишнее. Человек должен научиться сам работать с миллис, а ты ему костыль подсовываешь, это решение в стиле гайвера :) (не обижайся. тезка :)
Вас это чудо тупо уже третий день разводит на код. Не ведитесь. Сам он написал ровно ноль целых ноль десятых и даже не пытается въехать в тему, ему это не надо , ему нужен код
К сожалению, очень похоже на правду. Человек получил готовый код и даже не потрудился понять, как он работает... при таком подходе что-либо добавить сам он конечно не сможет... отсюда и эта ветка на 200 постов - ТС просто тупо ждет, когда кто-нить психанет и выложит ему готовый скетч... чтобы больше не смотреть на эту тупость.
Вам же уже говорили - можно сделать с помощью флагов. Индусы вон в большие прошивки для стм до сотни флагов вгоняют, что бы логику работы обеспечить. У Вас должно быть как минимум три - само событие, информация о событии, сброс события. Если событие произошло, то выводим один раз информацию, и пока сброса нет, ничего не выводим.
Развести форум на 200 постов из-за кода в 5 строк ...
Вот поэтому я и решил, что может дедушка какой старый, которому программирование не дается. Бывают же такие. Столько страниц разводить из-за кода в 5 строк - странно, даже для очень хитрого манипулятора. Цель не оправдывает средства. Если оттачивание навыков манипуляции не является одной из целей ;))).
-------------------
ТС: Вот тебе еще милый эффект - печать сколько не было фазы. Можешь еще чего придумать сам. Если ты реально хочешь учиться и всё выше к тебе не относится.
###
Поймите, от подключения зависит очень много, особенно для контроля трёх фаз. Если подключено без фильтра, то на входе мы имеем импульсы длиной 10 миллисекунд и сважностью 2, со сдвигом фаз 20мс/3 = 6.(6) мс. Если нужно отслеживать только отключение напряжения, то на входе ставят выпрямители с RC фильтрами и постоянная времени фильтра выпрямителя определяет с какой скоростью устройство реагирует на отключение напряжения. Зато второй способ хорошо подходит для устройств учёта времени отсутствия напряжения. Соответственно подходы к программированию совершенно разные. Ваши 0 и 1 соответствуют есть - нет напряжение или 10 мс инпульсам?
Есть или нет напряжения.
Поймите, от подключения зависит очень много, особенно для контроля трёх фаз.
не усложняйте жизнь ТС!!!
у меня сын, не плохо решает по математике, но с первого до пятого у него сегодня получилось 5 этажей...
Вот и ТС сперва решит хоть как-то, но согласно своему-же ТЗ.
Есть или нет напряжения.
пол фазы на диодном детекторе - это есть или нет напряжения? сколько полуфаз считать отсутствием напряжения? или вопрос решен на аппаратном уровне?
###
вот зачем вы снова лепите 3 фазы? у вас одна уже работает как нужно?
пытаюсь посчитать время пока нет фазы . Пока получается только с помощью while. Интересно наверное пока считает то остальной код не выполняется? Или нет .
И можно ли для трех фаз так применить
Отлично. Тогда следующий вопрос - что надо получить? Полное время отключения по фазам для одного отключения? Суммарное время отключения по фазам если отключений несколько за определённый отрезок времени? Выдать ошибку , если отключение больше 5 секунд и потом выдать полное время отключения фазы? Могу придумать ещё много вариантов реакции программы на изменения уровня сигналов на входах 5,6,7.
пытаюсь посчитать время пока нет фазы . Пока получается только с помощью while. Интересно наверное пока считает то остальной код не выполняется? Или нет .
И можно ли для трех фаз так применить
Пока выполняется while, остальной код ждет. Поэтому для трех фаз так работать не будет.
вам же выше вроде обьяснили, как считать время отсутсвия фазы. В чем опять проблема-то? Снова ждете, пока вам готовый код напишут?
1.Когда пропала фаза - начинаете считать время.
2. Когда время превысить 5 сек - выводите предупреждение.
3. Как фаза вернулась обратно - выводите прошедшее время.
Пункты 1 и 2 вам уже помогли написать. Неужели так трудно написать п3 по аналогии с п2?
надо было еще на второй странице Деду заплатить, чтоб он закрыл ветку :)
###
###
Пропала фаза начинаю считать while считает а чем еще зафиксировать старт и стоп ?
Пропала фаза начинаю считать while считает
используя while, вы не сможете контроллировать три фазы одновременно.
###
Вас это чудо тупо уже третий день разводит на код.
Не ведитесь.
Сам он написал ровно ноль целых ноль десятых и даже не пытается въехать в тему, ему это не надо , ему нужен код
да не нужен мне код - напишу.
Нужно понимание
1 - Как обнулить таймер.
2-запустить по событию.
3- остановить по событию.
И ни кого я не развожу а пытаюсь понять эти 3 позиции поэтому и спрашиваю у Вас.
Нужно понимание
1 - Как обнулить таймер.
== никак. Да и не нужно этого делать. Вы когда время на часах засекаете - вы их обнуляете разве? - нет, просто запоминаете текущее время. Вот и тут точно также - просто запоминайте значение миллис
=== опять не нужно. Таймер миллис запущен всегда и уже тикает, опять же как часы на руке
=== и в третий раз мимо. Не надо останавливать. Смотрите на время - и вычитаете из него значение, запомненое в п1.
Ваша ошибка - вы воспринимаете таймер, как секундомер, который надо запускать и останавливать. Это неверно. Вместо этого используйте аналогию с обычными часами.
Да Вы правы поэтому и не могу толком понять. Нужны хоть какие то примеры.
###
продам горсть будильников. Недораха.
Да Вы правы поэтому и не могу толком понять. Нужны хоть какие то примеры.
возьмите пример с вокзальными часами. На вокзальные часы вы никак не можете повлиять - не можете их пускать и останавливать, менять время. Но это абсолютно не мешает засечь по часам хоть 10 минут. хоть 2 часа.
Или, например, решить задачу - Сколько минут прошло от ухода электрички до прихода скорого поезда? - ведь это просто. не так ли?
А теперь замените уход электрички на пропадение фазы. а приход поезда - на появление - вы получите алгоритм измерения нужного вам отрезка.
продам горсть будильников. Недораха.
Деда, по мне так это лишнее. Человек должен научиться сам работать с миллис, а ты ему костыль подсовываешь, это решение в стиле гайвера :) (не обижайся. тезка :)
факт ухода и прихода электрички как зафиксировать
факт ухода и прихода электрички как зафиксировать
пипец...
ard-20 - мы что, по третьему кругу пошли? Вопрос "Как зафиксировать переход HIGH - LOW ?" уже обсуждали на второй странице.
продам горсть будильников. Недораха.
Деда, по мне так это лишнее. Человек должен научиться сам работать с миллис (не обижайся. тезка :)
Акей. :) Тенболее, он там всёрно нихрена не поймёт. :)
К сожалению, очень похоже на правду. Человек получил готовый код и даже не потрудился понять, как он работает... при таком подходе что-либо добавить сам он конечно не сможет... отсюда и эта ветка на 200 постов - ТС просто тупо ждет, когда кто-нить психанет и выложит ему готовый скетч... чтобы больше не смотреть на эту тупость.
###
И для трех фаз вроде вышло
И для трех фаз вроде вышло
насколько я вижу - этот код будет непрерывно спамить в Сериал значения таймеров. вместо того чтоб вывести время один раз на каждую фазу...
Да и задержки в 5 сек в коде нет
Вывод - шарились по гуглю, где-то нашли готовый код, в котором, скорее всего. точно так же ничего гне понимаете, как раньше.
Братва, нас ждет вторая серия! - помогите исправить мой новый код :)
###
Попытался написать через функцию и снова в порт печатает постоянно. Подскажите как сделать чтоб печатало1 раз
Вам же уже говорили - можно сделать с помощью флагов. Индусы вон в большие прошивки для стм до сотни флагов вгоняют, что бы логику работы обеспечить. У Вас должно быть как минимум три - само событие, информация о событии, сброс события. Если событие произошло, то выводим один раз информацию, и пока сброса нет, ничего не выводим.
куда их ставить эти флаги ?
куда их ставить эти флаги ?
Молчать! Господа офицеры!
куда их ставить эти флаги ?
Я ж тебе писал уже в #39
###
Подскажите как сделать чтоб печатало1 раз
третий раз одно и то же разжевывать?
Попытался написать через функцию и снова в порт печатает постоянно. Подскажите как сделать чтоб печатало1 раз
Подскажите куда ставить флаги в этом коде ?
Попытался написать через функцию и снова в порт печатает постоянно. Подскажите как сделать чтоб печатало1 раз
Подскажите куда ставить флаги в этом коде ?
В ОПУ себе вставь.
wdrakula , я пытался...
Попытался написать через функцию и снова в порт печатает постоянно. Подскажите как сделать чтоб печатало1 раз
Подскажите куда ставить флаги в этом коде ?
В
дупуloop().Вот ровно также, как ты сделал в CheckPhase(), событие случилось, если ты получил число больше 0 и событие сброшено, если получил 0.
Еще одно событие - печать. Когда напечатал, запоминаешь этот факт в еще одном флаге (флаг===логическая переменная).
Итог примерно такой:
###
Правильно. Теперь сам измени на ДВА флага. для меньше 5 сек и больше.
Мне нужно весь код написать за тебя? ;))) Мне - не нужно.
Правильно. Теперь сам измени на ДВА флага. для меньше 5 сек и больше.
Мне нужно весь код написать за тебя? ;))) Мне - не нужно.
Так он сам ещё ни строчки не написал.
Понял буду пробовать. Спасибо .
Понял буду пробовать. Спасибо .
Одна попробовала, семерых родила.
Неужели ты настолько тупой? Просто интересно. А возраст какой и образование?
Жуть. Вот тебе два флага. Дальше уж сам.
Неужели ты настолько тупой? Просто интересно. А возраст какой и образование?
Дракула, ТС не тупой, он просто по особому хитрый. Написано же выше - "ТС просто тупо ждет, когда кто-нить психанет и выложит ему готовый скетч..."
Сначала Кактус ему код написал, потом еще кто-то... а теперь и ты повелся.
А ТС знай сидит у речки и ждет, пока очередной код приплывет...
"Дура не дура, а 100 рублей в день имею" (с)
Неужели ты настолько тупой? Просто интересно
Развести форум на 200 постов из-за кода в 5 строк ...
Неужели ты настолько тупой? Просто интересно
Развести форум на 200 постов из-за кода в 5 строк ...
Вот поэтому я и решил, что может дедушка какой старый, которому программирование не дается. Бывают же такие. Столько страниц разводить из-за кода в 5 строк - странно, даже для очень хитрого манипулятора. Цель не оправдывает средства. Если оттачивание навыков манипуляции не является одной из целей ;))).
-------------------
ТС: Вот тебе еще милый эффект - печать сколько не было фазы. Можешь еще чего придумать сам. Если ты реально хочешь учиться и всё выше к тебе не относится.