Как точно управлять vex серво с ардуино
Перейти к содержимому

Как точно управлять vex серво с ардуино

  • автор:

Arduino и сервопривод

Сервопривод, он же сервомашинка, он же просто серво – простейший “модельный” актуатор, использовался в радиоуправляемых моделях ещё до появления Ардуино. Сервопривод поворачивает свой выходной вал в диапазоне ~180 градусов и обладает вполне приличным моментом для перемещения частей механизмов. В маленьком корпусе располагаются:

  • Коллекторный моторчик
  • Редуктор (пластиковый или металлический)
  • Потенциометр обратной связи
  • Контроллер (драйвер мотора, обратная связь, управление по интерфейсу PWM)

Серво комплектуется набором “качалок” и винтами для крепления

Характеристики 9-граммового сервопривода:

  • Напряжение питания: 3.. 7.2V
  • Крутящий момент:
    • 1.2кг/см при 4.8V
    • 1.6кг/см при 6.0V

    Сервопривод управляется ШИМ сигналом, точнее длиной импульса: минимальная (0 градусов) и максимальная (~180 градусов) длина импульса колеблется в зависимости от модели и производителя сервопривода.

    Подключение

    • Коричневый: GND
    • Красный: VCC
    • Жёлтый: цифровой пин

    Примечание: сервопривод потребляет довольно приличный ток (стартовый до 1А), поэтому рекомендуется питать его от внешнего источника. При питании от компьютера напряжение может просесть и МК перезагрузится, при высокой нагрузке (с 2 и больше приводов) может выгореть защитный диод на плате Arduino!

    Библиотеки

    Для управления сервоприводом можно использовать стандартную библиотеку Servo. Эта библиотека отбирает у микроконтроллера первый таймер, поэтому в некоторых случаях будет удобно использовать библиотеку SoftServo. Стандартная библиотека управляет сервоприводом очень резко, на максимальной скорости, поэтому для реальных применений лучше использовать библиотеку плавного движения серво – ServoSmooth.

    Servo.h

    Библиотека стандартная и идёт в комплекте с Arduino IDE. Подключаем и создаём объект сервопривода. При создании никакие аргументы не передаются:

    #include Servo myservo;

    Библиотека имеет следующие методы:

    uint8_t attach(int pin); // "подключить" с указанием пина uint8_t attach(int pin, int min, int max); // "подключить" с указанием пина и мин. макс. сигнала void detach(); // отключить void write(int value); // повернуть на угол в градусах void writeMicroseconds(int value); // повернуть на длину импульса

    При “подключении” серво через attach(pin) диапазон длины импульса устанавливается стандартный: 544.. 2400 мкс (задан в библиотеке). Если есть желание настроить серво идеально, чтобы она работала на весь диапазон – нужно попробовать покрутить её через writeMicroseconds() в крайних значениях диапазона и найти минимум и максимум, при которых серво “упирается”.

    Примеры

    Крутим туда сюда быстро

    Вращаем туда сюда быстро (как blink, только серво):

    #include Servo myservo; void setup() < myservo.attach(3); // подключаем на пин 3 >void loop() < myservo.write(0); // поворот на 0 градусов delay(1000); myservo.write(180); // поворот на 180 градусов delay(1000); >

    Крутим туда сюда плавно

    Поворачиваем туда сюда плавно, блокирующее выполнение:

    #include Servo myservo; void setup() < myservo.attach(3); >void loop() < for (int i = 0; i for (int i = 180; i > 0; i--) < myservo.write(i); delay(15); >>

    Крутим туда сюда плавно асинхронно

    Поворачиваем туда сюда плавно, асинхронное выполнение:

    #include Servo myservo; void setup() < myservo.attach(3); >uint32_t tmr; // переменная таймера int val = 0; // переменная яркости int dir = 2; // скорость и направление яркости void loop() < // асинхронный таймер на миллис if (millis() - tmr >= 20) < tmr = millis(); val += dir; // прибавляем скорость if (val >= 180|| val >

    Домашнее задание

    • Попробовать библиотеку ServoSmooth

    Связанные уроки

    • Документация на ServoSmooth
    • Функции времени

    Робототехнический комплект на базе VEX IQ Расширенный с техническим зрением

    Образовательный набор предназначенны для изучения основ разработки программируемых моделей автономных мобильных роботов.

    Образовательный набор предназначенны для изучения основ разработки программируемых моделей автономных мобильных роботов.

    В состав набора входит:

    • Комплект конструктивных элементов из пластика ;
    • Инструмент для работы с крепежными компонентами;
    • Сервопривод — 4 шт;
    • Пульт управления — 1 шт;
    • Датчик касания — 1 шт;
    • Датчик цвета — 1 шт;
    • Датчик тактильно-сенсорный со светодиодным модулем — 1 шт;
    • Камера с возможностью одновременного определения нескольких цветов — 1 шт;
    • Аккумуляторная батарея — 1 шт;
    • Робототехнический контроллер тип 1 — 1 шт;
    • Робототехнический контроллер тип 2 — 1 шт;

    Робототехнический контроллер Тип 1 состоит из:

    Arduino-робот жук Ringo

    Share Button

    Небольшой arduino-проект для начинающих с большими амбициями: с одной стороны, не нужны никакие сложные детали и навыки, с другой — это настоящая мобильная робототехническая платформа, которую можно сделать своими руками.

    ringoarduino2

    Для реализации потребуется один день, но проект можно развивать и дорабатывать далее. Не обязательно владеть пайкой, которую многие новички боятся и избегают, в проекте используется бредбоард, и паяльник не нужен.

    Программирование является еще одним страхом начинающих, Т.к. это настоящий робот, то, конечно, он имеет программу. Но сначала можно не вникать, а просто найти и скачать готовый код со страницы на GitHub. Это open source проект, программу можно изменять без каких либо ограничений. Возможно, это ваш первый робот и первый урок программирования.

    Подготовка

    Отлично, если вы знакомы с платформой Arduino. Если нет — не проблема. Построение робота Ringo — отличный способ это исправить. Начните с наших онлайн уроков Arduino для начинающих.

    ringoarduinoMaterial

    Компоненты, необходимые для разработки робота-жука

    ringoarduinoInstruments

    Инструменты, которые понадобятся

    Необходимые для проекта компоненты: Arduino Uno с кабелем USB, коробочка для одной 9В батареи, батарейка 9В (или аккумулятор 7,2-8,4В), три небольших аналоговых сервоприводов, один инфракрасный (ИК) приемник, мини-бредбоард, соединительные провода, стальная проволока (диаметр 1,5 — 2 мм), 2-3 обычных металлических скрепки. Также пригодятся инструменты.

    Как подключить ИК-приемник к Arduino

    В проекте используется ИК-приемник и ИК-передатчик (это может быть пульт от вашего телевизора).

    Давайте научимся получить команды с ИК-пульта дистанционного управления. Нужно считать и запомнить код сигнала, чтобы позже использовать его для управления роботом.
    Возьмите Arduino Uno, бредбоард, соединительные провода и ИК-приемник. Соберите схему как на фотографии.

    Подключение ИК-приемника к Arduino UNO

    Подключение ИК-приемника к Arduino UNO

    Схема подключения ИК-приемника к Arduino UNO

    Схема подключения ИК-приемника к Arduino UNO

    Эта схема подключения ИК-приемника TSOP2136. Если будете использовать другой приемник — смотрите его спецификацию.

    Теперь скачайте пример кода с GitHub. Откройте Arduino IDE и проект /ir_receiver/ir_receiver.ino. Первая строка кода:

    Это означает, что скетч использует специальную библиотеку IRremote.h, в которой реализован функционал приема и отправки ИК-сигналов.

    IRremote.h не является частью Arduino IDE, ее потребуется установить. Это open source проект с лицензией GNU, поэтому мы можем использовать этот код для своего робота. Откройте Serial Monitor и проверьте скорость передачи. Установите скорость 9600. Возьмите ИК пульт и начните нажимать на кнопки. Если собранная модель работает — вы видите коды в Serial Monitor.

    Разные производители — разные коды, также коды могут отличаться для разных моделей ИК-пультов. Чтобы не разбираться в этих кодах и упростить задачу — просто выпишем соответствия кодов, нажатым кнопкам, которые мы будем использовать. Некоторые коды соответствуют повторному нажатию и удержанию кнопки — их не будем использовать.

    Наш робот может выполнять 13 команд:

    1. Двигаться вперед.
    2. Двигаться Назад.
    3. Повернуть налево.
    4. Повернуть направо.
    5. Движение вперед с левым поворотом.
    6. Движение вперед с правым поворотом.
    7. Движение назад с левым поворотом.
    8. Движение назад с правым поворотом.
    9. Остановка.
    10. Установка 1-й скорости (медленная).
    11. Установка 2-й скорости.
    12. Установка 3-й скорости.
    13. Установка 4-й скорости (быстрая).

    Выберите кнопки на пульте дистанционного управления для соответствующих команд. Например, кнопки 1-9 для первых девяти команд и цветные кнопки (красная, зеленая, желтая и синяя) — для последних четырех.

    Теперь нажимайте соответствующую кнопку и записывайте соответствующие уникальные коды.

    Прототип:

    ringoarduinoProto

    ringoarduinoProto3

    Прежде чем приступить к сборке робота, проверим работоспособность железа и программы. Загрузите скетч в микроконтроллер, измените в программе коды в соответствии с таблицей, которую вы составили. Нажимайте на управляющие кнопки пульта, проверьте реагируют ли серводвигатели, все ли работает. Проверьте работоспособность модели не только с питанием по USB, но и с питанием от аккумулятора.

    Походка жука

    Не все знают как ходят жуки, поэтому несколько слов о походке жуков и алгоритме для подражания. Обычная походка шестиногих жуков — конечности каждой из трех пар ног переставляются в противофазе друг другу, что напоминает «шагающие штативы». Но это не все виды походки жуков, некоторые умеют скакать.

    Как мы можем реализовать походку жука? Наш робот имеет три сервопривода. Они установлены в ряд с левой стороны к правой. Левая серво — для левой передней и задних ног. Эти ножки изготовлены в виде одной детали. Правый сервопривод — для правой передней и задних ног. И центральный сервопривод — для средних ног.

    Видео, демонстрирующее как это работает:

    Монтаж

    Чтобы прикрепить батарейный отсек к плате возьмем скрепку и сделаем кронштейн. Все остальные компоненты мы установим на Arduino Uno: сервоприводы, мини-бредбоард.
    Распечатайте трафарет (скачать здесь). Возьмите линейку и проверьте длину линий. Если длина не совпадает нужно перед распечаткой поменять настройки в программе просмотра PDF-файлов.

    ArduinoB1

    ArduinoB2

    ArduinoB3

    ArduinoB5

    ArduinoB6

    Разогните скрепку, а затем согните ее по трафарету. Подключите булавку-кронштейн к цифровым пинам 9 и 12. Клеем приклейте кронштейн к нижней стороне держателя батареи. Не беспокойтесь о замыкании контактов 9 и 12. Это безопасно, т.к. мы не будем использовать их в скетче.

    Рекомендуется использовать бредбоард как можно меньшего размера. Опытным путем автор проекта определи, что размер 5*10 пинов оптимален. Такой бредбоард можно либо купить готовый, либо обрезать от макетной платы кусок нужного размера.

    tinybredborad

    BredboardRezat

    Сервоприводы нужно подготовить — убрать наклейки, т.к. мы будем их склеивать, и отрезать монтажные петли, они занимают слишком много места. Сервоприводы бывают очень хрупкие.

    servohack

    servohack2

    Возьмите один сервопривод и приклейте его на верхней части держателя батареи. Постарайтесь расположить серво так же, как на фотографиях. Обратите внимание, нужно оставить некоторое пространство для миниатюрного бредбоард рядом с сервоприводом. Приклейте сервоприводы к держателю батареи.

    servohack3

    servohack4

    servohack5

    Установите макетную плату. Обратите внимание, что ИК-приемник должен быть направлен вверх. Теперь включите выключатель на держателе батареи, попробуйте управлять роботом с ИК-пульта и убедитесь, что все работает.

    Как насчет ног?

    Автор проекта сделал трафареты, чтобы помочь подобрать размер и форму ног робота-жука. Распечатайте их и проверьте масштаб. Один трафарет для левой и правой фронтальных задних ног, другой трафарет — для средних. Приклейте ноги к серводвигателям. Кажется, все готово!

    Этот Arduino-проект для начинающих можно развивать далее. Можно изменить внешний вид и изменить код. Роботу-жуку пригодятся различные датчики, крошечная веб-камера, Bluetooth-адаптер и ваша фантазия!

    И чтобы вам не забывался этот проект, arduiono-жуки решили станцевать и спеть песню:

    Использованные компоненты: плата arduino, три небольших аналоговых сервоприводов, стальная проволока (диаметр 1,5 — 2 мм), 2-3 обычных металлических скрепки, ИК-приемник, мини-бредбоард, стальная проволока (диаметр 1,5 — 2 мм), 2-3 обычных металлических скрепки

    Возможно вас также заинтересует готовый робот-жук.

    Другие проекты на этой платформе:

    • Робот-миньон-копилка Arduino
    • Говорящий робот-пылесос. Универсальное улучшение на Arduino
    • Шагающая тыква. Arduino-робот для Хэллоуина
    • Sourino — самодельная роботизированная мышь
    • Двуногий робот из Arduino, LEGO и деталей 3D печати
    • Шестиногий шагающий робот из Arduino, LEGO и деталей 3D печати
    • Робот-художник на базе Arduino Uno
    • Самодельный робот-собака Spot Micro
    • Сферический четвероногий робот Arduino
    • Виртуальная игра, управляемая настоящим велосипедом (Arduino)
    • Четверногий Arduino-робот mechDOG
    • Велосипед, подключенный к Google Street View через Arduino
    • Самодельный таймер мытья рук на основе Arduino
    • Учебный набор начинающего ситифермера
    • Робот на Arduino, управляемый с помощью жестов
    • Как сделать аниматронный хвост
    • Вездеход из Lego с видео и bluetooth на Raspberry Pi
    • Робот Juno: изучай Arduino и программирование
    • Робот-манипулятор из настольной лампы IKEA
    • Arduino-робот, объезжающий препятствия
    • Роботизированная интеллектуальная система — РИС
    • Серво-выключатель света для умного дома
    • Робот-рыба на Arduino
    • Сделай сам большого человекоподобного робота
    • Сноуборд в виртуальной реальности с Arduino и Google Cardboard
    • Open Source проект робота на Arduino
    • Робот-компаньон на основе Arduino и Android-смартфона
    • Робот миньон из яйца от Kinder-сюрприза и Arduino
    • Робот-собака на Arduino
    • Робот WALL-E на Arduino
    • Робот-Железяка 1, управляемый по Bluetooth
    • Собирай кубик Рубика с Arduino UNO
    • ArGo — автомобиль из конструктора Lego Technic и Arduino
    • Arduino робот-сортировщик Skittles, напечатанный на 3D-принтере
    • Полноразмерный робот T-800 из фильма Терминатор
    • Робот Гадкий утенок
    • Робот-шлем для чистки зубов
    • Noodlebot — шагающий робот на базе Arduino
    • Робот телеприсутствия из arduino и нетбука
    • Arduino-Lego танк
    • Робот для игры в воздушный хоккей из частей для 3D принтера
    • Arduino драм машина (Yellow Drum Machine)
    • Робот-гуманоид Halley: Ambassador Robot 001
    • MobBob — шагающий робот-смартфон
    • PopPet — оригинальный образовательный робот
    • Робот, рисующий по фотографии
    • Робот R2D2, напечатанный на 3D-принтере
    • Робот, танцующий как Майкл Джексон
    • Запускай кофе-машину, используя Twitter
    • Управляй телевизором силой мысли и Arduino
    • О’кей Google, Сезам, открой дверь
    • Марсоход, напечатанный на 3D-принтере
    • Шагающий робот из палочек от мороженого

    Перейти в каталог DIY-проектов роботов

    Как добавить робопроект в каталог?

    Arduino – плавное управление сервоприводом v3.8

    Вы наверняка работали с сервоприводами из под Arduino и знаете, как это выглядит: сервоприводу можно приказать повернуться на угол, и он с максимальной скоростью начнёт поворачиваться на этот угол. Это очень неправильно применять в реальных устройствах, потому что создаются лишние нагрузки и растёт потребление тока (большой стартовый ток). Можно ли крутить серво плавно? Можно! Я сделал библиотеку ServoSmooth, которая в этом поможет.

    Зачем это нужно? В реальных устройствах, где нужно сервой повернуть/подвинуть тяжёлый объект, стандартный подход (дать сигнал и ждать поворота) работает на уничтожение редуктора привода, потому что объекты инерционные и быстро их разогнать и остановить невозможно! Ограничив максимальную скорость серво, разгон и торможение мы продлеваем ресурс редуктора в десятки раз, а также потребляем меньший ток за счёт плавности прикладывания момента. И очевидно получаем приятный визуальный эффект – нет резких рывков всей конструкции при разгоне-остановке.

    Так как ESC контроллеры используют такой же протокол связи, мы автоматически получаем плавный разгон и торможение для бесколлекторных моторов (в этом случае за ускорение мотора отвечает максимальная скорость, метод setSpeed. Подумайте, это уже производная). И это круто!

    [УСТАРЕЛО] Алгоритм работы для любопытных: работает всё на экспоненциальном бегущем среднем, именно оно обеспечивает плавный разгон и торможение. Ограничение скорости делается “дроблением” поворота серво по времени: серво поворачивается на несколько градусов по таймеру.

    Старый алгоритм

    //по таймеру: _newSpeed = _servoTargetPos - _servoCurrentPos; // расчёт скорости if (_servoState) < _newSpeed = constrain(_newSpeed, -_servoMaxSpeed, _servoMaxSpeed); // ограничиваем по макс. _servoCurrentPos += _newSpeed; // получаем новую позицию _newPos += (float)(_servoCurrentPos - _newPos) * _k; // и фильтруем её _newPos = constrain(_newPos, _min, _max); // ограничиваем _servo.writeMicroseconds(_newPos); // отправляем на серво >

    Новый алгоритм работает по другому, обеспечивая более плавный разгон. Ускорение осуществляется двойным интегрированием позиции: к ней прибавляется скорость, к которой прибавляется ускорение. Торможение начинается с момента, полученного из школьной формулы S=V*V/(2*a). Для любознательных прикреплю алгоритм ниже.

    Новый алгоритм

    float err = _targetPos - _currentPos; if (abs(err) > 0.1) < bool thisDir = (_speed * _speed / _maxAcceleration / 2.0 >= abs(err)); // пора тормозить _speed += _maxAcceleration * delta * (thisDir ? -_sign(_speed) : _sign(err)); _speed = constrain(_speed, -_maxSpeed, _maxSpeed); _currentPos += _speed * delta; >

    blank

    БИБЛИОТЕКА

    ServoSmooth v3.8

    Библиотека для плавного управления сервоприводами

    • Является дополнением к стандартной библиотеке Servo
    • Поддерживает работу с расширителем серво PCA9685 (начиная с v3.0)
    • Настройка максимальной скорости сервопривода
    • Настройка ускорения (разгон и торможение) сервопривода
    • Плавный пуск из любого положения при запуске программы (начиная с v3.2)
    • При использовании ESC и БК мотора получаем “плавный пуск” мотора
    • Установка целевой позиции серво по углу (0-180) и длине импульса (500-2400)
    • Автоматическое отключение привода по таймауту неактивности и включение при изменении позиции (настраивается)
    • Нативная поддержка серво с любым диапазоном по углу (180, 270, 360), см. документацию

    Поддерживаемые платформы: все Arduino-совместимые платы (библиотека является дополнением к стандартной библиотеке Servo и PCA9685)

    УСТАНОВКА

    • Библиотеку можно найти и установить через менеджер библиотек по названию ServoSmooth в:
        • Arduino IDE (Инструменты/Управлять библиотеками)
        • Arduino IDE v2 (вкладка “Library Manager”)
        • PlatformIO (PIO Home, вкладка “Libraries”)

        ДОКУМЕНТАЦИЯ

        Документация

        • write() и writeMicroseconds() — повернут вал серво с максимальной скоростью
        • attach() и detach() — подключить и отключить серво от управления

        Инициализация

        Объект создаётся точно так же, как в Servo.h, без параметров. Также можно передать рабочий угол серво (если не передавать, будет равен стандартному 180 град.)

        #include "ServoSmooth.h" // подключили либу ServoSmooth servo; // создали объект ServoSmooth servo(270); // создали с указанием макс. угла серво
        • attach(pin); — подключит серво на указанный pin , угол поворота будет установлен на 0 градусов. Длина импульса* мин-макс будет стандартная, 500-2400 мкс
        • attach(pin, target); — подключит серво на указанный pin , угол поворота** будет установлен на target градусов. Длина импульса* мин-макс будет стандартная, 500-2400 мкс
        • attach(pin, min, max); — подключит серво на указанный pin , угол поворота будет установлен на 0 градусов. Длина импульса* будет установлена min и max соответственно.
        • attach(pin, min, max, target); — подключит серво на указанный pin , угол поворота будет установлен на target градусов. Длина импульса* будет установлена min и max соответственно.

        Плавный пуск ( new! )

        • Заранее знать, на какой угол физически повёрнут привод при запуске и передать его в attach(pin, target) . Как узнать? Зависит от конкретной задачи и логики работы программы. Можно запоминать положение сервы в ЕЕПРОМ и восстанавливать при запуске, можно устанавливать серво в один и тот же угол перед выключением/перезагрузкой системы, и т.д.
        • Воспользоваться фичей smoothStart() , которая появилась в версии 3.2 данной библиотеки. Работает она очень просто: аттачит и детачит сервопривод с периодом в пару десятков миллисекунд, таким образом привод плавно движется до заданного угла из любого начального положения. Вызывать smoothStart() нужно однократно (при старте программы) сразу после attach(pin, target) в блоке setup() . Внимание! Функция блокирующая, выполнение занимает 900 миллисекунд. Период «рывка» сервопривода выбран минимальный, при котором серво начинает понимать, чего от неё хотят. Период довольно большой, поэтому движение к заданной позиции происходит рывками, но в целом гораздо плавнее, чем без smoothStart() . В массивном механизме рывки практически незаметны!
        servo.attach(2, 35); // стартовый угол 35 градусов servo.smoothStart(); // "плавно" движемся к нему

        Управление

        • setTarget(длина); — устанавливает целевую позицию для серво в величине длина импульса, мкс (~500-2400)
        • setTargetDeg(угол); — устанавливает целевую позицию для серво в градусах (0-180)
        • setSpeed(скорость); — установка максимальной скорости (больше нуля) в градусах в секунду
        • setAccel(ускорение); — установка ускорения (float числа 0.01 — 1.0). Можно больше 1, будет ещё резче. Если установить ускорение 0 — оно будет отключено и серво будет двигаться по профилю постоянной скорости (с бесконечным ускорением)
          • Если передавать ускорение в целых числах (с версии 3.7 библиотеки) — ускорение будет установлено в градусах/сек/сек. Рабочий диапазон ускорений 1 — 1500 , чем больше — тем резче. При значении 0 ускорение будет отключено.
          • setDirection(напр); — принимает NORMAL (false) или REVERSE (true), меняет направление серво
          • setCurrent(длина); — установка текущей позиции в мкс (500 — 2400). Может пригодиться в ситуации, когда мы знаем реальный угол серво и хотим сообщить о нём программе, чтобы алгоритм не дёргал привод.
          • setCurrentDeg(угол); — установка текущей позиции в градусах (0-180). Зависит от min и max.
          • getCurrent(); — получение текущей позиции в мкс (500 — 2400)
          • getCurrentDeg(); — получение текущей позиции в градусах (0-180). Зависит от min и max
          • getTarget(); — получение целевой позиции в мкс (500 — 2400)
          • getTargetDeg(); — получение целевой позиции в градусах (0-180). Зависит от min и max
          • setMaxAngle(); — установка макс. угла серво, по умолчанию 180 . Позволяет удобно работать с разными сервами (на 270 и 360 градусов)

          Расширитель серво PCA9685

          • ServoDriverSmooth servo; // по умолчанию (адрес 0x40, угол 180)
          • ServoDriverSmooth servo(0x40); // с указанием адреса драйвера
          • ServoDriverSmooth servo(0x40, 270); // с указанием адреса и макс. угла

          Список функций

          void write(uint16_t angle); // аналог метода из библиотеки Servo void writeMicroseconds(uint16_t angle); // аналог метода из библиотеки Servo void attach(uint8_t pin); // аналог метода из библиотеки Servo void attach(uint8_t pin, int min, int max); // аналог метода из библиотеки Servo. min по умолч. 500, max 2400 void detach(); // аналог метода detach из библиотеки Servo void start(); // attach + разрешает работу tick void stop(); // detach + запрещает работу tick boolean tick(); // метод, управляющий сервой, должен опрашиваться как можно чаще. // Возвращает true, когда целевая позиция достигнута. // Имеет встроенный таймер с периодом SERVO_PERIOD boolean tickManual(); // метод, управляющий сервой, без встроенного таймера. // Возвращает true, когда целевая позиция достигнута void setSpeed(int speed); // установка максимальной скорости (градусы в секунду) void setAccel(float accel); // установка ускорения (0.05 - 1.0). При значении 1 ускорение максимальное. 0 - отключено void setAccel(int accel); // установка ускорения в градусах/сек/сек (рабочее от 1 до ~1500). 0 - отключено void setTarget(int target); // установка целевой позиции в мкс (500 - 2400) void setTargetDeg(int target); // установка целевой позиции в градусах (0-макс. угол). Зависит от min и max void setAutoDetach(boolean set); // вкл/выкл автоматического отключения (detach) при достижении угла. По умолч. вкл void setCurrent(int target); // установка текущей позиции в мкс (500 - 2400) void setCurrentDeg(int target); // установка текущей позиции в градусах (0-макс. угол). Зависит от min и max void setMaxAngle(int maxAngle); // установка макс. угла привода int getCurrent(); // получение текущей позиции в мкс (500 - 2400) int getCurrentDeg(); // получение текущей позиции в градусах (0-макс. угол). Зависит от min и max int getTarget(); // получение целевой позиции в мкс (500 - 2400) int getTargetDeg(); // получение целевой позиции в градусах (0-макс. угол). Зависит от min и max void smoothStart(); // вызывать сразу после attach(пин, таргет). Смягчает движение серво из неизвестной позиции к стартовой. БЛОКИРУЮЩАЯ НА 1 СЕК!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *