roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 дек 2024, 08:18

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: много длинных таймеров в ардуино?
СообщениеДобавлено: 02 апр 2013, 12:47 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
пришла вот идея, сделать некий автомат механический, который делает разные действия, например по нажатию кнопок.

пример:
нажатие кнопки - процедура Led1On(10) - включает первый светодиод на 10 минут, если он был выключен
нажатие другой кнопки - Led2Off(3) - выключает второй светодиод на 3 минуты, если он был включен
третья кнопка - Drive1On(5) - включает первый мотор на 5 минут, если он был выключен.
при изменении освещённости на датчике ниже предела - SetServo1(45,4,0) - повернуть серву номер один в положение 45 градусов на 4 минуты, потом возврат в положение 0 градусов.

вот как организовать это дело имея в распоряжении ардуиновские таймеры?

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: много длинных таймеров в ардуино?
СообщениеДобавлено: 02 апр 2013, 12:51 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
мнееее... слегка туманно.
Так механический или ардуино?
И в чем проблема с таймерами?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: много длинных таймеров в ардуино?
СообщениеДобавлено: 02 апр 2013, 13:20 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
по другому

есть одна ардуина и к неё подключено 8 экранчиков с кнопками
у каждого экранчика своя персональная кнопка старт и стоп.
каждый экранчик отображает секундомер который запускается и останавливается кнопками
и все 8 секундомеров могут работать все одновременно или по очереди.

вот как имея один хардварный таймер отслеживать 8 разных временных отрезков?
желательно в свете использования ардуины :)

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: много длинных таймеров в ардуино?
СообщениеДобавлено: 02 апр 2013, 13:28 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Каскадированием. Настраиваешь один аппаратный таймер, например, на 100 мс. Он дергает процедуру do_100ms()
в этой процедуре счетчик. Каждый десятый вызов эта процедура дергает другую процедуру do_1s(). Та в свою очередь каждый 60-й раз дергает процедуру do_1m()

В итоге у тебя получается почти любой гранулярности временная сетка - ты просто свои активности вызываешь в нужном временном обработчике.

Там появляются две небольшие проблемки с тем, что каунтеры - это целые числа, и совсем любой гранулярности достичь не удастся. Вторая проблема, что если делать неветвящееся каскадирование, то очень сложно поменять потом это самое гранулирование. Допустим, у тебя есть процедуры do_4s() и do_32s(), так вот после этого ты фиг получишь do_60s(). Т.е. придется сделать в, например, do_1s() несколько каунтеров. Как-то так.

А, вот, вспомнил. Это называется time base management. Удобно на самом деле.

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: много длинных таймеров в ардуино?
СообщениеДобавлено: 02 апр 2013, 13:56 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
это так я смогу выполнять разные процедуры с заданным циклом
тобишь раз в 4 секунды например будет мигать одна лампочка а раз в 32 секунды мигать вторая.

а запуск и остановка таймеров в произвольное время как реализовать?
Вложение:
таймеры.jpg
таймеры.jpg [ 37.2 КиБ | Просмотров: 5103 ]

нажал кнопку 3 и замигал тёмно зелёный светодиод со своей собственной периодичностью.

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: много длинных таймеров в ардуино?
СообщениеДобавлено: 02 апр 2013, 13:59 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
Держишь для каждой кнопки свой счетчик времени и флаг запущенности.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: много длинных таймеров в ардуино?
СообщениеДобавлено: 02 апр 2013, 14:23 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
счётчик времени один, я его могу держать для одной кнопки.
вот это мне непонятно, как один хардварный счётчик использовать много раз для разных задач

вроде в ардуине есть функция millis(), она выдаёт время с момента запуска программы в милисекундах.
можно засекать время нажатия кнопки и постоянно проверять скока времени прошло...
если с момента нажатия натикало 3 минуты то можно выключить первую лампочку, а если натикало 4 минуты с нажатия второй кнопки то можно выключить вторую лампочку.

Добавлено спустя 8 минут 59 секунд:
millis() работает примерно 49 дней а потом переполняется и сбрасывается.
так что мне его хватит на любые цели :)

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: много длинных таймеров в ардуино?
СообщениеДобавлено: 02 апр 2013, 14:25 
Не в сети
Аватара пользователя

Зарегистрирован: 05 фев 2008, 15:33
Сообщения: 2687
Откуда: St. Petersburg - Moscow
Skype: SkyStorm77
ФИО: Костюк Константин Вячеславович
Myp писал(а):
счётчик времени один, я его могу держать для одной кнопки.
вот это мне непонятно, как один хардварный счётчик использовать много раз для разных задач

вроде в ардуине есть функция millis(), она выдаёт время с момента запуска программы в милисекундах.
можно засекать время нажатия кнопки и постоянно проверять скока времени прошло...
если с момента нажатия натикало 3 минуты то можно выключить первую лампочку, а если натикало 4 минуты с нажатия второй кнопки то можно выключить вторую лампочку.


Да я так и делаю. Есть время задержки, по нажатии кнопки текущее время + задержка записываю в переменную.
Потом проверяю больше-меньшу текущее время и время в переменной.
Собственно с RTC так же работаю.

_________________
Никто кроме нас!!!
4Robots.ru - Все для роботов!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: много длинных таймеров в ардуино?
СообщениеДобавлено: 02 апр 2013, 14:55 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Myp писал(а):
счётчик времени один, я его могу держать для одной кнопки.

Ты настрой таймбейс один, и инкрементируй в нем те счетчики, чьи кнопки нажаты и обнуляй те, чьи кнопки отпущены.

Миллис, по сути, это то же самое - с таймбейсом в 1мс.

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO