roboforum.ru

Технический форум по робототехнике.

Управление 3-мя серво без "Delay"

Управление 3-мя серво без "Delay"

Atiroz » 08 сен 2016, 11:25

Всем ку!

Вопрос, как не "паузить" Arduino Uno при управлении 3-мя серво? Например, первая серво должна крутануть туда-сюда 1 раз каждые 20 секунд, вторая серво на каждой 21-ой секунде (время от сработатывания первой сервы) должна прокрутиться 10 секунд туда-сюда без останова, ... И плюс третья серво же еще - та просто должна непрерывно работать туда-сюда, начиная с 5-й секунды запуска системы и до момента выключения системы... Паузы "delay" просто всё портят - один двиг крутит, компьютер соответственно - на паузе, ну или ждёт окончания паузы, чтобы начать выполнять следующую команду в цикле программы, ну и о синхронной работе сервоприводов тут можно и не мечтать. Что делать, друзья?

Re: Управление 3-мя серво без "Delay"

Madf » 08 сен 2016, 13:12

ну так не делайте алгоритм линейным
стройте его так, что за 1 проход производится "одновременная" обработка движений на ВСЕХ сервах

Re: Управление 3-мя серво без "Delay"

Atiroz » 08 сен 2016, 13:38

Madf писал(а):ну так не делайте алгоритм линейным
стройте его так, что за 1 проход производится "одновременная" обработка движений на ВСЕХ сервах


Ну.. например?
Допустим, одну серву крутим постоянно, вторую каждые 5 сек один раз, третью каждые 21 сек крутим 10 раз... Как "нелинейно" это сделать, не пойму что-то... Ардуинка-то одна...

Re: Управление 3-мя серво без "Delay"

Madf » 08 сен 2016, 15:08


Re: Управление 3-мя серво без "Delay"

Eruman » 08 сен 2016, 18:22

2Мадф: Не все по-аглицки шпрехают. Надобно попонятнее, к Яндексу посылать.

2Атироз: По моему разумению, проще в бесконечной петле проверять пробежавшее время, и в зависимости от его значения выполнять команды. Функция millis() возвращает количество миллисекунд от старта. Делите её на время, заданное у вас тиком, и или остатки от деления анализируйте, или количество тиков, или оба значения сразу. :)

Например, посмотрите на реализацию Blink без задержек: http://arduino.ru/tutorials/BlinkWithoutDelay

Есть еще неплохие библиотеки, позволяющие потоки организовать, но это, наверное, вам будет рановато.


Rambler\'s Top100 Mail.ru counter