Библиотека уже встроена в среду программирования Arduino IDE.
Эта библиотека функций для Arduino контроллера предоставляет набор функций для управления сервоприводами. Стандартные сервоприводы обычно позволяют поворачивать привод на опредленный угол от 0 до 180 градусов. Некоторые сервоприводы позволяют совершать полные обороты на заданной скорости.
Библиотека Servo позволяет одновременно управлять 12-ю сервоприводами на большинстве плат Arduino и 48-ю на Arduino Mega. На контроллерах отличных от Mega использование библиотеки отключает возможность использовать выходы 9 и 10 в режиме ШИМ даже если привод не подключен к этим выводам. На плате Mega могут быть использованы до 12 сервоприводов без потери функционала ШИМ. При использовании Mega для управления от 12 до 23 сервоприводов нельзя будет использовать выходы 11 и 12 для ШИМ.
В общем случае сервопривод подключается 3-мя проводами: питание, земля и сигнальный. Обычно питание - красный провод и может быть подключен к выводу +5V на плате Arduino. Черный провод - земля, подключается к GND выводу Arduino. Желтый сигнальный провод подключается к цифровому выводу контроллера Arduino. Следует отметить, что мощные сервоприводы могут создавать большую нагрузку, в этом случает он должен быть запитан от отдельного источника питания (не через выход +5V Arduino). Аналогично для случая подключения сразу нескольких сервоприводов. Убедитесь, что привод и контроллер подключены к общей земле.
Подключает Servo к указанному выходу, с которого осуществляется управление приводом. На ранних версиях Arduino - 0016 и более ранних, библиотека Servo поддерживала управления только через порты 9 и 10.
servo.attach(pin); servo.attach(pin, min, max);
servo: переменная типа Servo
pin: номер выхода, к которому подключаем servo и с которого осуществляется управление приводом
min (опциональный): ширина импульса в микросекундах, соответствующий минимальному (угол 0 градусов) положению сервопривода. (по умолчанию 544)
max (optional): ширина импульса в микросекундах, соответствующий максимальному (угол 180 градусов) положению сервопривода.
#include "servo.h" Servo myservo; void setup() { myservo.attach(9); } void loop() {}
Передает значения для управления приводом. Для стандартного сервопривода это угол поворота. Для привод постоянного вращения, функция задает скорость вращения (0 - для максимальной скорости вращения в одну сторону, 180 - для максимальной скорости в другую сторону и около 90 для неподвижного состояния).
servo.write(angle)
servo: переменная типа Servo
angle: значение записываемое в servo, от 0 до 180
#include "servo.h" Servo myservo; void setup() { myservo.attach(9); myservo.write(90); // устанавливает сервопривод в среднее положение } void loop() {}
Передает значение для управления сервоприводом в микросекундах (uS), устанавливая угол поворота на это значение. Для стандартного привода значение 1000 - максимальный поворот против часовой стрелки, 2000 - максимальный поворот по часовой стрелке, 1500 - посередине.
Замечание: некоторые производители не придерживаются стандартных значений и такие приводы могут управляться значениями от 700 до 2300. Поэкспериментируйте со значениями до момента, пока привод не повернется и остановится в крайнем положении. Тем не менее следует избегать постоянного использования привода на значениях больше допустимых.
Приводы постоянного вращения реагируют на данную команду подобно реакции на функцию write().
servo.writeMicroseconds(uS);
servo: переменная типа Servo
uS: значение в микросекундах (int)
#include "Servo.h" Servo myservo; void setup() { myservo.attach(9); myservo.writeMicroseconds(1500); // устанавливает привод в среднее положение } void loop() {}
Считывает значение текущего положения сервопривода (значение, записанное последним вызовом функции write()).
servo.read();
servo: переменная типа Servo
Положение (угол) сервопривода от 0 до 180.
Проверяет подключена ли переменная Servo к выходу.
servo.attached();
servo: переменная типа Servo
true если подключена, false в противном случае.
Отсоединяет переменную Servo от указанного выхода. Если все Servo переменные отсоединены, то выходы 9 и 10 могут быть использованы в режиме ШИМ с помощью analogWrite().
servo.detach();
servo: переменная типа Servo