Содержание

@amperka/multiservo

Модуль для работы с 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);

connect([i2c])

Возвращает новый объект MultiServo для работы с шилдом, взаимодействующим по шине i2c.

Если параметр i2c не передан, используется PrimaryI2C.

MultiServo

Класс для работы с моторшилдом. Имеет один метод connect для инициализации.

connect(pin[, opts])

Возвращает экземпляр объектаMultiServoDevice для взаимодействия с сервоприводом на разъеме pin.

Параметр optsзадаёт характеристики сервопривода. Ожидается объект с полями:

Если какие-либо поля не определены или объект opts вовсе не передан, используются значения по умолчанию. Будьте аккуратны с заданием длины импульсов. Выход за пределы длины, поддерживаемой сервоприводом может привести к его выгоранию.

// Настраиваем шину 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);

MultiservoDevice

Класс для работы с сервоприводом, создаваемый методом connect объекта Multiservo.

Servo.write(value[, units])

Устанавливает угол сервопривода в значение value, заданное в единицах units. В качестве units принимаются значения:

// Настраиваем шину 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');

Servo.release()

Отпускает сервопривод. После отключения вал сервопривода вращается свободно под действием внешних сил.

// Настраиваем шину 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);