Arduino библиотека Servo представляет собой набор функций для управления сервоприводами. Данная библиотека дает возможность управлять сразу двенадцатью сервоприводами с помощью большинства микроконтроллеров Ардуино. Некоторые платы Ардуино позволяют подключать меньше сервоприводов (такие платы как Arduino LilyPad) так как у их меньше цифровых вводов/выводов. Другие платы дают возможность управлять сразу 48-ю сервоприводами (Arduino Mega).
Использование библиотеки Servo накладывает некоторые ограничения. На всех платах кроме Arduino Mega, при работе с данной библиотекой, пропадает возможность использовать цифровые пины 9 и 10 в режиме ШИМ. На плате Ардуино Мега режим ШИМ становится не доступен на пинах 11 и 12, только при подключении более 12 сервоприводов.
Скачать библиотеку Servo.h
Данная библиотека автоматически устанавливается вместе с Arduino IDE. Но вы можете отдельно скачать библиотеку Servo для Ардуино. Для установки библиотеки просто распакуйте zip архив в папку «C:\Program Files (x86)\Arduino\libraries» или в то место, где у васт установлена среда разработки Arduin IDE. Если у вас запущена программа Arduino IDE, то для работы с новой библиотекой её необходимо перезапустить.
После того как вы скачали библиотеку Servo и установили ее, вы можете подключать библиотеку в свои скетчи и вам будут доступны примеры использования данной библиотеки.
Для использование библиотеки Servo необходимо подключить ее в свой скетч и создать переменную типа servo. Сделать это очень просто:
#include <Servo.h>
Servo myservo;
void setup() {
// CODE...
}
void loop() {
// CODE...
}
attach()
Указывает вывод к которому подключен сервопривод.
Синтаксис
servo.attach(pin, min, max);
Параметры
pin — Обязательный параметр. Цифровой пин к которому подключен сигнальный провод сервопривода.
min — Необязательный параметр. Ширина импульса в микросекундах, соответствующая минимальному (угол 0 градусов) положению сервопривода. (по умолчанию 544)
max — Необязательный параметр. Ширина импульса в микросекундах, соответствующая максимальному (угол 180 градусов) положению сервопривода.
Возвращаемые значения
Нет
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(9);
}
void loop() {
// CODE...
}
write()
Поворачивает сервопривод на заданный угол. Для сервоприводов постоянного вращения устанавливает скорость и направление вращения.
Синтаксис
servo.write(angle);
Параметры
angle — Обязательный параметр. Устанавливает угол от 0 до 180 градусов. При использовании сервопривода постоянного вращения значение 90 используется для неподвижного состояния. Значение 0 для максимальной скорости кручения в одну сторону, а 180 для максимальной скорости кручения в другую сторону.
Возвращаемые значения
Нет
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(9);
myservo.write(90); // Поворачивает сервопривод на среднее положение
}
void loop() {
// CODE...
}
writeMicroseconds()
Поворачивает сервопривод на угол заданный в микросекундах. С сервоприводами постоянного вращения работает по таком же принципу как и функция write().
Синтаксис
servo.writeMicroseconds(ms);
Параметры
ms — Обязательный параметр. Значение в микросекундах
Возвращаемые значения
Нет
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(9);
myservo.writeMicroseconds(1500); // Поворачивает сервопривод на среднее положение
}
void loop() {
// CODE...
}
read()
Возвращает текущее положение сервопривода.
Синтаксис
servo.read();
Параметры
Нет
Возвращаемые значения
Int от 0 до 180.
#include <Servo.h>
Servo myservo;
void setup() {
Serial.begin(9600); // Открываем последовательный порт
myservo.attach(9);
int position = myservo.read(); // Считываем положение сервопривода
Serial.print("Текущее положение сервопривода: ");
Serial.println(position); // Отправляем значение угла на запись в последовательный порт
}
void loop() {
// CODE...
}
attached()
Проверяет, указан ли управляющий пин для экземпляра класса Servo.
Синтаксис
servo.attached();
Параметры
Нет
Возвращаемые значения
boolean true — если пин был указан и false — если нет
#include <Servo.h>
Servo myservo;
void setup() {
Serial.begin(9600); // Открываем последовательный порт
if(!myservo.attached()) {
myservo.attach(9); // Указываем пин если этого не было сделано раньше
}
}
void loop() {
// CODE...
}
detach()
Отсоединяет экземпляр класса от пина. При отсоединения всех сервоприводов, заблокированные ШИМ выводу снова станут доступны.
Синтаксис
Servo.detach()
Параметры
Нет
Возвращаемые значения
Нет
#include <Servo.h>
Servo myservo;
void setup() {
Serial.begin(9600); // Открываем последовательный порт
myservo.attach(9); // Указываем пин если этого не было сделано раньше
int position = myservo.read(); // Считываем положение сервопривода
Serial.print("Текущее положение сервопривода: ");
Serial.println(position); // Отправляем значение угла на запись в последовательный порт
myservo.detach(); // Освобождаем пин, к которому был подключен сервопривод
}
void loop() {
// CODE...
}