Зачем нужна библиотека Servo?
- Войдите на сайт для отправки комментариев
Пнд, 30/04/2018 - 11:16
Приветствую.
Поясните, пожалуйста, мне, тупому, для чего нужна библиотека Servo?
Почему просто не обойтись analogWrite?
Ан нет, есть специальная библиотека, да не одна...
Modsley , вы это тролите или о ситуации вообще тупите ?
Нет, я действительно не могу этого понять.
Пишем analogWrite, всё работает вроде. Зачем библиотеки? Они ведь память отъедают, прерывание занимают...
Что они такого особенного делают?
Я совершенно искренне не понимаю.
Это совершенно разные системы. Они не совместимы и они для разных систем и систем подходов.
Проще всего они разные. Это как шапка и сапог. Вы же не носите сапог на голове. Потому что шапка это лишняя покупка и занимает место в квартире.
Не в первый раз читаю тут о волшебном способе управления серводвигателями через analogWrite(). Откуда это вообще лезет, с какого ютуб-урока?
Уважаемый, вот ничего не понимаю.
Чем PWM, выдаваемый на пин библиотекой Servo отличается от того, который получаем путём analogWrite?
Или для сервы частота другая нужна?
Серве (цифровой) частота не нужна. Нужны импульсы заданной длительности. Сможете на analogWrite гарантированно дать импульс в 961мс?
Это-то понятно.
Я имел в виду, что импульсы-то этой самой заданной длительности ведь следуют с какой-то частотой...
В общем, если я правильно понял, analogWrite не обеспечивает заданной точности.
Правильно?
Я не знаю, что он там серве вообще обеспечивает.
Потому что дергать стандартную серву на той частоте, что выдает analogWrite вообще смысла нет. Среднестатистическая серва ожидает импульсы заданной длительности ~раз в 20мс. Т.е. с частотой 50Гц. 490Гц ШИМ-а Ардуины как бы на порядок выше номинала.
Постоянно импульсы подаются только для того, чтобы поддерживать положение серводвигателя на позиции, в том случае, если на него действует проворачивающая нагрузка. Ну и еще потому что дешевые сервы не с первой команды на позицию выходят. Во всех остальных случаях пульсация в серву не требуется.
Спасибо. Теперь всё понятно.
Серве (цифровой) частота не нужна. Нужны импульсы заданной длительности. Сможете на analogWrite гарантированно дать импульс в 961мс?
Легко. Проблема и разница только в одном месте: analogWrite() нормально работает на серву только при правильной перенастройке таймера и он должен быть .. 16-и битным. То есть далеко не везде. Библиотека Servo.h имитирует верное управление на любом пине .. ценой программного времени микроконтроллера. Это всё и есть ответ на вопрос зачем нужна библиотека.
Продемонстрируете? Мне интересно на анализаторе глянуть, как analogWrite будет давать нужную длительность.
Что-то мне подсказывает, что разговор беспредметный. Нет ни модели "сервы" ни скетча, кстати серва что это такое - прецизионный сервопривод на 50-100 Квт или китайская рулевая машинка от игрушечного медвежонка. От этого многое зависит. Если второе, то ему и ШИМа за глаза, если первое то и библиотеки не помогут. О чем спорим? У автора ведь от ШИМа работает.
Да пусть работает, кто ж запрещает ему рулить сервой, как получается. Мне действительно хочется глянуть, как можно в два счета перестроить таймеры, чтобы analogWrite выдавал 540...2400мкс каждые 20мс, к примеру. А то я лепил себе облегченную servo.h на таймерах, теперь интересно глянуть - короче выйдет код или нет.
Если Вам надо точно 961мксек, то надо поднять разрешение таймера в 4 раза из 1/64 в 1/16 и увеличить период счета также в 4 раза до 60000.
Пример, конечно, интересный, но я так понимаю, что нужно еще откуда-то нарыть эти timerCapture(), timerControl() и еще десяток каких-нибудь скрытых функций. Т.е. фактически переписать servo.h другими словами.
Да не. Это я года 2 назад с целью вспомнить язык после 17-летнего перерыва, накатал простенький набор дефайнов, подобных функциям Ардуино библиотек, чтобы было проще осваивать все это барахло. Там все просто: это просто макросы, вычисляющие соотв. регистры таймеров и пр. ерунды по номеру пина и "какой" нужен регистр А,В или Capture. Вспринимайте просто: в регистра таймера control A надо записать вот такое. А в его регистр capture - это.