Библиотека 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.

Разработка проектов