Включение нагрузки по заданному времени.
- Войдите на сайт для отправки комментариев
Ср, 07/05/2014 - 00:59
Здравствуйте всем. Помогите решить легкую для вас задачу. Необходим код для ардуино с такими требованиями:
Есть отрезок времени (например пять минут) необходимо включить нагрузку в определное время (например на 10-й секунде) потом отключить её (например на 15 секунде) и так далее.
Какая нагрузка?
10-я секунда от чего отсчитывается?
Интервал включения фиксированный, или задается через интерфейс?
Блокировки и проверки нужны?
Супер девайс! рекомендую
http://www.ebay.com/itm/New-0-1s-99h-Programmable-Digital-Timer-Double-Time-Delay-Relay-AC-110V-220V-/371006330388?pt=UK_BOI_Electrical_Test_Measurement_Equipment_ET&var=&hash=item5661b35614
От 0.1 секунды до 99 часов каждый из двух независимых каналов, переключаются по очереди.
Contact rating: AC 220V 5A DC 24V 7A(Resistive load)
Только есть нюанс - после смены установок остаются старые пока не передёрнуть питание.
Из минусов- выше обычных автоматов, довольно сильно торчит из обычного щитка, дверцу не даёт закрыть. На индикаторе идёт прямой отсчёт, удобнее был-бы обратный.
Из несомненных плюсов- выведены входы Reset Pause .
Reset понятно сбрасывает, а Pause останавливает счёт. Можно сделать на них кое-какую логику.
А если поставить по 0.1 секунды оба канала то по щелчкам реле слышно что оно даже успевает переключаться!!!
Супер девайс! рекомендую
http://www.ebay.com/itm/New-0-1s-99h-Programmable-Digital-Timer-Double-Time-Delay-Relay-AC-110V-220V-/371006330388?pt=UK_BOI_Electrical_Test_Measurement_Equipment_ET&var=&hash=item5661b35614
Спасибо но это не подходит ))
Нагрузка= пока эксперементирую на встроеном диоде на 13 выводе. А вообще будет нагрузка холодный неон, через симистор и оптопару.
10 секунда от момента включения ардуино, тоесть с момента подачи питания на ардуино.
Интервал включения, не совсем понял вопроса.
Блокировки проверки тоже не совсем понял о чем речь, но думаю ответ: Нет.
т.е. 0 --> 10 (вкл) --> 25 (выкл) --> 35(вкл) --> 50 (выкл) и т.д.?
эти интервалы будет нужда менять (кнопками, энкодером и пр.), или они константами прописаны в коде?
К примеру, не включать нагрузку, если питание подано, но сейчас светло; сообщать об обрыве в цепи питания хололдного неона и пр.
т.е. 0 --> 10 (вкл) --> 25 (выкл) --> 35(вкл) --> 50 (выкл) и т.д.?
эти интервалы будет нужда менять (кнопками, энкодером и пр.), или они константами прописаны в коде?
К примеру, не включать нагрузку, если питание подано, но сейчас светло; сообщать об обрыве в цепи питания хололдного неона и пр.
т.е. 0 --> 10 (вкл) --> 25 (выкл) --> 35(вкл) --> 50 (выкл) и т.д.?
Да именно так, не каких кнопок не чего не будет. Включается выключается только по написанному коду.
К примеру, не включать нагрузку, если питание подано, но сейчас светло; Нет такого не надо.
void loop ()
{
delay (10000);
digitalWrite (13,1);
delay (15000);
digitalWrite (13,0);
}
По простоте моего задания наверно видно что я делитант ))) Поэтому можно подробней? Как будет выглядеть полностью весь код? и можно прокоментировать строчки кода?
Ага.
Код полностью
void setup ()
{
pinMode (13, OUTPUT); //настроить пинг на выход
}
void loop ()
{
delay (10000); //10 тыс миллисекунд ничего не делать
digitalWrite (13, 1);//пподать 5 вольт на 13 пил
delay (15000); //15 сек отдыхаем
digitalWrite (13,0);//снять напряжение с пива
}
Немного не то.
digitalWrite (13, 1);
delay (15000);
Включает на 15 секунд. А надо чтоб выключало на 15-й секунде
необходимо включить нагрузку в определное время (например на 10-й секунде) потом отключить её (например на 15 секунде) и так далее.
Поменяй второй делей на 5 тыс.
Как надо на 15 секунде включается на 30 выключается и стоп машина?
Поменяй второй делей на 5 тыс.
Нет вычеслять время не вариант в моем случае. Так как включений выключений будет много, за пять минут может быть до 1000 включений выключений. Поэтому я замучаюсь писать такой код с вычеслениями времени.
надо написать именно в таком варианте:
такаета секунда - включается
такаета секунда - выключается
и так далее....
А у вас получается такой вариант:
через столько то секунд - включается
через столькото секунд после включения -выключается
и так далее....
Что значит на такой-то секунде включается? Откуда отсчет вести? С времени старта МК?
Пожалуйста:
void loop ()
{
If (millis ()==15000) digitalWrite (13,1);
If (millis () ==20000) digitalWrite (13,0);
// и.т.д
}
Что значит на такой-то секунде включается? Откуда отсчет вести? С времени старта МК?
Да, отчет времени с момента включения ардуино
Пожалуйста:
void loop ()
{
If (millis ()==15000) digitalWrite (13,1);
If (millis () ==20000) digitalWrite (13,0);
// и.т.д
}
Огромнейшее спасибо!!! То что надо. Работает.
Только при включении я так понимаю есть какаета задержка (на загрузку МК) ? Так как все включения выключения выполняются на 1,5-2 секунды позже. Как решить эту проблему? Есть какаета информация сколько секунд выполняется включение МК? Тоесть через сколько секунд после включения начинает выполнятся программа?
Рас уж вы мне помогли, может я как то отблагодарю? И задам ещё несколько подобных вопросов?
Только учти рано или поздно millis переполнится и начнет осчет с начала
Что значит переполнится?
Мк не может хранить числа до бесконечности.
таймер миллис имеет тип unsigned long досчитав до 2^32 -1 он начнет считать с 0
А вот это вы проигнорировали? )))
Рас уж вы мне помогли, может я как то отблагодарю? И задам ещё несколько подобных вопросов?
Автору надо: "включений выключений будет много, за пять минут может быть до 1000 включений выключений".
А код из поста #16 выполнится один раз. Следующий повтор будет через 47 суток.
А код из поста #16 выполнится один раз. Следующий повтор будет через 47 суток.
Так там коммент и т д. прописать тыщу условий. Задание не очень четко сформулировано.
Достаточно сказать спасибо )
Есть вопросы, задавайте, чем смогу помогу
Достаточно сказать спасибо )
Есть вопросы, задавайте, чем смогу помогу
Всё правильно, код должен выполнятся один рас, а 1000 включений выключений это имеется ввиду они будут прописаны в коде, а не повторятся.
Вопрос уже был ))
при включении МК я так понимаю есть какаета задержка? Так как все включения выключения выполняются на 1,5-2 секунды позже. Как решить эту проблему? Есть какаета информация сколько секунд выполняется включение МК? Тоесть через сколько секунд после включения начинает выполнятся программа?
Этого увы не знаю
И ещё вопросы:
1) Когда включаешь питание МК, диод моргает несколько рас. Почему это происходит и не будет ли моргать у меня подключеный неон ?
2) В спомощью какого кода можно сделать плавное затухание и включение диода (в дальнейшем неона подключеного через оптопару и симистр) ?
3) В спомощью какого кода сделать эфект страбоскопа?
заданию из первого поста соответствует код в посте #10. При этом одобренная последовательность"0 --> 10 (вкл) --> 25 (выкл) --> 35(вкл) --> 50 (выкл)" выполняется и кода минимум.
Для коррекции задержки при включении МК надо чуть уменьшить первую паузу и прописать это в setup:
У меня такое чувство, что тут трое общаются в разных терминах, поэтому постоянно непонятки.
Может как то можно включать МК без запуска программы, а потом например замыканием каких то контактов запускать программу?
В рабочей версии замени номер пина на другой и все
Использовать ШИМ. Неон разве позволяет плавное включение?
Если просто - то уменьшить числа a и b до 100-400. Если нужно двойное/тройное моргание, то через циклы.
У меня такое чувство, что тут трое общаются в разных терминах, поэтому постоянно непонятки.
Это вы про что? От меня только я пишу. Просто пишем одновременно, поперепутались сообщения. Сам уже запутался..
У меня такое чувство, что тут трое общаются в разных терминах, поэтому постоянно непонятки.
Это вы про что? От меня только я пишу. Просто пишем одновременно, поперепутались сообщения. Сам уже запутался..
Всё я понял про что вы )))
Использовать ШИМ. Неон разве позволяет плавное включение?
Неон да позваляет.
2) В спомощью какого кода можно сделать плавное затухание и включение диода (в дальнейшем неона подключеного через оптопару и симистр) ?
3) В спомощью какого кода сделать эфект страбоскопа?
Ты уж определись, что конкретно надо ;)
Вот "конструктор":
К примеру, надо (как в первом задании) включить на 10 сек и выключить на 15 сек, затем бесконечно повторить. Тогда пиши в loop:
Если надо плавно включить и через 10 сек плавно выключить, а через 5 сек повторить, то пишем:
Если нужен стробоскоп из 5 вспышек, с паузой 3 сек между сериями вспышек, то пишем:
Можно и комбинировать:
Если хочется произвольный эффект, то пишем:
2) В спомощью какого кода можно сделать плавное затухание и включение диода (в дальнейшем неона подключеного через оптопару и симистр) ?
3) В спомощью какого кода сделать эфект страбоскопа?
Ты уж определись, что конкретно надо ;)
Надо все эфекты. В какоето время просто включить / выключить, в какоето плавное включение / выключение, в какоето стробоскоп. Всё это в одной программе, просто в разное время.
За коды спасибо, буду разбираться.
К примеру, надо (как в первом задании) включить на 10 сек и выключить на 15 сек, затем бесконечно повторить. Тогда пиши в loop:
Такого задания не было, просто понял не правильно.
Задание такое: Необходимо включить нагрузку на определенной секунде. (отсчет времени с момента включения МК) Потом необходимо выключить нагрузку так же на определенной секунде и так далее... без повторений программы. Потом я дополнил задание: необходимо ещё добавить в тот же код, так же на определенной секунде, эфект затухания / включения и эфект стробоскопа.
Пример:
Включаем МК, пошол отсчет времени.
На 10-й секунде включить нагрузку.
На 15-й секунде выключить нагрузку.
На 20-й секунде сделать плавное включение.
На 25-й секунде выключить нагрузку.
На 30-й секунде включить нагрузку.
На 35-й секунде сделать плавное выключение
На 40-й секунде включить стробоскоп.
На 45-й секунде выключить стробоскоп.
После 45-й секунды ни чего не делаем, выключаем МК.
Вот так думаю понятней всем :) Советов много, спасибо, но всё как то в расброс, теперь разбираться в ваших советах и собирать по кусочкам. Незнаю получится ли :)
Весь код был выше (пример loop комбинированного), осталось правильно прописать последовательность эффектов и паузы. Дерзайте! :)
Там нет времени в которое должен включится определенный эфект.
Вот например сейчас у меня код такой:
Как мне туда добавить эфект вашего стробоскопа:
Рассчитать. Длительность эффекта известна, осталось дополнить паузу до наступления времени следуюшего события.
(Это к посту 42).
digitalWrite... заменить на вызов функции эффекта.
if (millis ()==13300) strob(5,48,3000);
Не понял. Можете на примере показать?
Например вот так надо:
Написали ответ раньше чем я задал вопрос :) Спасибо, ща попробую
рагается:
error: 'strob' was not declared in this scope
Надо весь мой код из поста 38. А if вставлять в loop:
Ни чего не получается, пошел я спать :)