Библиотека Servo
Эта библиотека функций для 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.attach()
Подключает 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() {}
Servo.write()
Передает значения для управления приводом. Для стандартного сервопривода это угол поворота. Для привод постоянного вращения, функция задает скорость вращения (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() {}
Servo.writeMicroseconds()
Передает значение для управления сревоприводом в микросекундах (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() {}
Servo.read()
Считывает значение текущего положения сервопривода (значение записанное последним вызовом функции write()).
Синтаксис
servo.read()
Параметры
- servo: a variable of type Servo
Возвращаемое значение
Положение (угол) сервопривода от 0 до 180.
Servo.attached()
Проверяет если переменная Servo подключена к выходу.
Синтаксис
servo.attached()
Параметры
- servo: переменная типа Servo
Возвращаемое значение
- true если подключена; false в противном случае.
Servo.detach()
Отсоединяет переменную Servo от указанного выхода. Если все Servo переменные отсоединены, то выходы 9 и 10 могут быть использованы в режиме ШИМ с помощью analogWrite().
Синтаксис
servo.detach()
Параметры
- servo: переменная типа Servo
Вернуться в справочник Arduino.