====== @amperka/servo ======
Модуль для работы с [[amp>collection/servo|сервоприводами]]. Библиотека позволяет управлять привычными сервомоторами с интерфейсом PDM (Pulse Duration Modulation) двух видов:
* Сервоприводы с удержанием угла
* Сервоприводы постоянного вращения
// Создаём объект для работы с сервоприводом на пине P13
var myServo = require('@amperka/servo').connect(P13);
// Устанавливаем вал сервопривода в угол 0°
myServo.write(0);
// Ждём две секунды перед следующим действием
setTimeout(function() {
// Устанавливаем вал сервопривода в угол 90°
myServo.write(90);
// Ждём ещё две секунды перед следующим действием
setTimeout(function() {
// Устанавливаем вал сервопривода в угол 180°
myServo.write(180);
}, 2000);
}, 2000);
func:: connect(pin[, opts])
Возвращает новый объект ''Servo'' для работы с сервомотором подключённому к пину ''pin''.
Параметр ''opts'' задаёт характеристики сервопривода. Ожидается объект с полями:
* ''pulseMin'' — минимальная поддерживаемая приводом длина импульса в миллисекундах.
* ''pulseMax'' — максимальная поддерживаемая приводом длина импульса в миллисекундах.
* ''valueMin'' — значение для метода ''[[#write|write]]'', соответствующее минимальной длине импульса.
* ''valueMax'' — значение для метода ''[[#write|write]]'', соответствующее максимальной длине импульса.
Если какие-либо поля не определены или объект ''opts'' вовсе не передан, используются значения по умолчанию. Будьте аккуратны с заданием длин импульсов. Выход за пределы длин, поддерживаемых сервоприводом может привести к его сгоранию.
* Для сервоприводов с удержанием угла, используйте ''valueMin'' и ''valueMax'' для определения граничных значений поворота вала в градусах.
* Для сервомоторов постоянного вращения в ''valueMin'' и ''valueMax'' удобно задавать условные величины ''-1'' и ''1'' или известную из характеристик привода угловую скорость.
class:: Servo
Класс для работы с сервоприводом. Чтобы создать экземпляр класса, используйте функцию ''connect''.
meth:: Servo.write(value[, units])
Устанавливает угол сервопривода в значение ''value'', заданное в единицах ''units''. В качестве ''units'' принимаются значения:
* ''"ms"'' — длина пульса в миллисекундах.
* ''"us"'' — длина пульса в микросекундах.
* не задано — значение в условных единицах в диапазоне [''valueMin''; ''valueMax''].
// Создаём объект для работы с сервоприводом на пине P13
var myServo = require('@amperka/servo').connect(P13);
myServo.write(120);
myServo.write(900, 'us');
myServo.write(1.15, 'ms');
meth:: Servo.release()
Отпускает сервопривод. После отключения вал сервопривода вращается свободно под действием внешних сил.
// Создаём объект для работы с сервоприводом на пине P13
var myServo = require('@amperka/servo').connect(P13);
// Устанавливаем вал сервопривода в угол 90°
myServo.write(90);
// Ждём пять секунд перед следующим действием
setTimeout(function() {
// Отпускаем сервопривод
myServo.release();
// Ждём ещё пять секунд перед следующим действием
setTimeout(function() {
// Устанавливаем вал сервопривода в угол 180°
myServo.write(180);
}, 5000);
}, 5000);