====== @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);