Модуль для работы с Multiservo Shield. Библиотека позволяет управлять привычными сервомоторами с интерфейсом PDM (Pulse Duration Modulation) двух видов:
// Настраиваем шину I2C PrimaryI2C.setup({sda: SDA, scl: SCL, bitrate: 400000}); // Создаем новый объект MultiServo var mServo = require('@amperka/multiservo').connect(PrimaryI2C); // Создаем новый объект сервопривода, подключенны к пину 0 шилда var s0 = mServo.connect(0); // Устанавливаем привод на угол 0 s0.write(0); setTimeout(function(){ // Устанавливаем привод на угол 90 s0.write(90); setTimeout(function(){ // Устанавливаем привод на угол 180 s0.write(180); }, 2000); }, 2000);
Возвращает новый объект MultiServo для работы с шилдом, взаимодействующим по шине i2c.
Если параметр i2c не передан, используется PrimaryI2C.
Класс для работы с моторшилдом. Имеет один метод connect для инициализации.
Возвращает экземпляр объектаMultiServoDevice для взаимодействия с сервоприводом на разъеме pin.
Параметр optsзадаёт характеристики сервопривода. Ожидается объект с полями:
pulseMin — минимальная поддерживаемая приводом длина импульса в миллисекундах.pulseMax — максимальная поддерживаемая приводом длина импульса в миллисекундах.valueMin — значение для метода write, соответствующее минимальной длине импульса.valueMax — значение для метода write, соответствующее максимальной длине импульса.
Если какие-либо поля не определены или объект opts вовсе не передан, используются значения по умолчанию. Будьте аккуратны с заданием длины импульсов. Выход за пределы длины, поддерживаемой сервоприводом может привести к его выгоранию.
valueMin и valueMax для определения граничных значений поворота вала в градусах.valueMin и valueMax удобно задавать условные величины -1 и 1 или известную из характеристик привода угловую скорость.// Настраиваем шину I2C PrimaryI2C.setup({sda: SDA, scl: SCL, bitrate: 400000}); // Создаем новый объект MultiServo var mServo = require('@amperka/multiservo').connect(PrimaryI2C); // Создаем новый объект сервопривода, подключенны к // разъему 0 шилда var s0 = mServo.connect(0, //добавим изменения в пределы {pulseMin: 0.500, pulseMax: 2.500}); // Устанавливаем привод на угол 0 s0.write(0); setTimeout(function(){ // Устанавливаем привод на угол 90 s0.write(180); setTimeout(function(){ // Устанавливаем привод на угол 180 s0.write(0); }, 2000); }, 2000);
Класс для работы с сервоприводом, создаваемый методом connect объекта Multiservo.
Устанавливает угол сервопривода в значение value, заданное в единицах units. В качестве units принимаются значения:
"ms" — длина пульса в миллисекундах."us" — длина пульса в микросекундах.valueMin; valueMax].// Настраиваем шину I2C PrimaryI2C.setup({sda: SDA, scl: SCL, bitrate: 400000}); // Создаем новый объект MultiServo var mServo = require('@amperka/multiservo').connect(PrimaryI2C); // Создаем новый объект сервопривода, подключенны к разъему 0 шилда var s0 = mServo.connect(0); s0.write(120); s0.write(900, 'us'); s0.write(1.15, 'ms');
Отпускает сервопривод. После отключения вал сервопривода вращается свободно под действием внешних сил.
// Настраиваем шину I2C PrimaryI2C.setup({sda: SDA, scl: SCL, bitrate: 400000}); // Создаем новый объект MultiServo var mServo = require('@amperka/multiservo').connect(PrimaryI2C); // Создаем новый объект MultiServoDevice, подключенный к разъему 0 шилда var s0 = mServo.connect(0); // Устанавливаем привод на угол 90 s0.write(90); setTimeout(function() { // Отпускаем сервопривод через 5 секунд s0.release(); setTimeout(function() { // Еще через 5 секунд устанавливаем привод на угол 180 s0.write(180); }, 5000); }, 5000);