![]() |
![]() |
#1 |
Member
Регистрация: 29.03.2013
Сообщений: 68
Вес репутации: 0 ![]() |
![]()
Всем привет.
Прошу помощи в написании кода для ардуины. Мне надо на вход ПЛК подать кратковременный сигнал от релюшки, секунды 4-5 чтобы держался. Пытаюсь написать программу для ардуины так, чтобы без функции delay(). Поискав информацию в инете, понял, что надо использовать прерывание по таймеру. А вот как это сделать, какую библиотеку использовать - голову уже сломал, не могу разобраться... Может что посоветуете? Спасибо! Последний раз редактировалось electric; 03.09.2015 в 17:25. |
![]() |
![]() |
![]() |
#2 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Если ардуина на ATmega328 то можно использовать библиотеку CyberLib
Можно и без прерываний обойтись Я думаю что этого примера будет достаточно , что бы написать код под себя Данный код выполняет Вашу функцию каждые 600 сек. Код:
uint32_t time=600000; void loop() { if( millis()-time > 600000) // задан интервал 600сек. { //здесь должен быть Ваш код или вызов функции time = millis(); } } |
![]() |
![]() |
![]() |
#3 | |
Member
Регистрация: 29.03.2013
Сообщений: 68
Вес репутации: 0 ![]() |
![]() Цитата:
У меня ардуина MEGA2560 и таймер хочу запускать немного по-другому - в основной программе включаю реле и передаю управлению таймеру по прерыванию с указанием времени на отключение. Через заданный промежуток времени прерывание срабатывает и реле отключается, при этом таймер "встает", т.е. повторно не срабатывает, как то так что ли... |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 ![]() |
![]()
а что будет делать мега2560 после того как отключит реле по таймеру?
|
![]() |
![]() |
![]() |
#5 |
Member
Регистрация: 29.03.2013
Сообщений: 68
Вес репутации: 0 ![]() |
![]()
Продолжать работу дальше по основному циклу.
Если по условиям программы надо будет еще щелкнуть реле - то опять включит, запустит таймер и через определенное время выключит... Блин, так и не разобрался с таймерами, сделал через милис костыль, но чувствую, так нельзя делать)))) |
![]() |
![]() |
![]() |
#6 | |
Member
Регистрация: 12.01.2016
Адрес: Кривой Рог
Сообщений: 36
Вес репутации: 0 ![]() |
![]() Цитата:
Могу предложить пример скетча написанный под сигнализацию и там этот вопрос решён. |
|
![]() |
![]() |
![]() |
#7 |
Member
Регистрация: 07.08.2014
Сообщений: 37
Вес репутации: 0 ![]() |
![]()
anatoliylagutenko а можете выложить скетч для повышения образованности! заранее спасибо.
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() PHP код:
__________________
istarik.ru Последний раз редактировалось stD; 29.01.2016 в 20:13. |
![]() |
![]() |
![]() |
#9 |
Senior Member
Регистрация: 21.06.2013
Адрес: Москва
Сообщений: 176
Вес репутации: 0 ![]() ![]() ![]() |
![]()
На основе примеров из интернета составил скетч.Вроде все работает,но чувствую что-то неправильно.Огромная просьба проверить код.
Логика такова:при появлении +5в на входе 2 включается выход АО и работает 2сек независимо есть ли на входе +5в или нету. Вот код: PHP код:
|
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|