Библиотека Servo для управления сервоприводом
Для управления сервоприводом в Arduino имеется стандартная библиотека Servo. На платах, отличных от Mega, использование библиотеки отключает возможность использования analogWrite() (ШИМ) на пинах 9 и 10 (вне зависимости, подключены к этим пинам сервы или нет). На платах Mega до 12 сервоприводов могут использоваться без влияния на функциональность ШИМ, но использование от 12 до 23 сервомашинок отключит ШИМ на пинах 11 и 12. Cервопривод подключается тремя проводами : питание (Vcc), "земля" (Gnd) и сигнальный (С). Питание — красный провод, он может быть подключен к выводу +5 В на плате Arduino. Черный или коричневый провод — "земля" подключается к выводу Arduino GND, сигнальный (оранжевый/желтый/белый) провод подключается к цифровому выводу контроллера Arduino. Следует отметить, что мощные сервоприводы могут создавать большую нагрузку — в этом случае их следует запитывать отдельно (не через выход +5 В Arduino). То же самое верно для случая подключения сразу нескольких сервоприводов.
Набор функций библиотеки Servo:
attach(int);
detach();
write(int);
writeMicroseconds(int);
read();
attached().
Функция attach()
Функция attach() подключает переменную servo к указанному выходу, с которого осуществляется управление приводом.
Синтаксис:
servo.attach(pin) servo.attach(pin, min, max)
Параметры:
pin — номер выхода, к которому подключаем сервопривод и с которого осуществляется управление приводом;
min — ширина импульса в микросекундах, соответствующая минимальному (угол 0 градусов) положению сервопривода;
max — ширина импульса в микросекундах, соответствующая максимальному (угол 180 градусов) положению сервопривода.
Возвращаемого значения нет.
Функция detach()
Функция detach() отсоединяет переменную servo от подключенного функцией attach() выхода. Если все переменные servo отсоединены, то выходы 9 и 10 могут быть использованы в режиме ШИМ с помощью analogWrite().
Синтаксис:
servo.detach()
Параметров нет. Возвращаемого значения нет.
Функция write(int)
Функция write(int) передает значения для управления приводом. Для стандартного сервопривода это угол поворота. Для привода постоянного вращения функция задает скорость вращения: 0 — для максимальной скорости вращения в одну сторону, 180 — для максимальной скорости в другую сторону и около 90 для неподвижного состояния.
Синтаксис:
servo.write(angle)
Параметр: angle — значение, записываемое в servo (от 0 до 180). Возвращаемого значения нет.
Функция writeMicrosconds(int)
Функция writeMicrosconds(int) передает значение для управления сервоприводом в микросекундах (uS), устанавливая угол поворота на это значение. Для стандартного привода: значение 1000 — максимальный поворот против часовой стрелки, 2000 — максимальный поворот по часовой стрелке, 1500 — посередине.
Синтаксис:
servo.writeMicrosconds (uS)
Параметр: uS — значение в микросекундах. Возвращаемого значения нет.
Функция read()
Функция read() cчитывает значение текущего положения сервопривода (значение, записанное последним вызовом функции write()).
Синтаксис:
servo.read() Параметров нет.
Возвращаемое значение: angle — положение (угол) сервопривода от 0 до 180.
Функция attached()
Функция attached() проверяет, подключена ли переменная Servo к выходу.
Синтаксис:
servo.attached()
Параметров нет.
Возвращаемые значения: true — если подключена, false — в противном случае.