Pololu Maestro node servo controller
npm install @fustaro/pololu-maestro-controllernpm install @fustaro/pololu-maestro-controller`
$3
`
const servoModel = new ServoModel({
pwmRange: { min: 1000, natural: 1500, max: 2000 },
angleRange: { min: -60, natural: 0, max: 60 },
speed: 0.1,
servoDirection: ServoDirection.HIGHER_PWM_CLOCKWISE
});
`
$3
`
const servo = new Servo({
servoModel: servoModel,
centerOffsetPwm: 0,
channel: 0,
flipDirection: false
});
`
$3
`
import { getOrCreateMaestroController } from '@fustaro/pololu-maestro-controller';
const controller = getOrCreateMaestroController(uniqueHardwareName, portName, channels);
//uniqueHardwareName: A unique reference to a given Maestro, e.g. 'Maestro_COM4'
// The ServoControllerFactory will only ever return a single
// ServoController for a given uniqueHardwareName
//portName: The USB port to find and connect the Maestro on.
// On Windows, this will typically be 'COM1', 'COM2', etc
// On RPI, this will typically be '/dev/ttyACM0' or '/dev/ttyUSB0'
//channels: The amount of channels this Maestro supports (6, 12, 18, 24 etc)
`
Note on Raspberry Pi running multiple Pololu Maestros from multiple USB ports, you may need
to reference the ports by hardware ID, for example;
`
const port_m1 = '/dev/serial/by-id/usb-Pololu_Corporation_Pololu_Mini_Maestro_12-Channel_USB_Servo_Controller_**-if00';
const port_m2 = '/dev/serial/by-id/usb-Pololu_Corporation_Pololu_Mini_Maestro_12-Channel_USB_Servo_Controller_**-if00';
const servoController_m1 = getOrCreateMaestroController('Maestro_M1', port_m1, 12);
const servoController_m2 = getOrCreateMaestroController('Maestro_M2', port_m2, 12);
`
To get your unique hardware ids, just plug in your Maestros and run;
`
ls /dev/serial/by-id/
`
$3
`
controller.setAngleDegrees(servo, 40);
`
$3
`
import { beginAngleLoop, stopAngleLoop } from '@fustaro/pololu-maestro-controller/dist/samples/angleLoop';
const controller = ;
const servo = ;
//this will set your servo to 40°, 0°, -40°, 0°, etc - changing every 500ms
beginAngleLoop(controller, servo, [40, 0, -40, 0], 500);
`
`
import { beginSinLoop, stopSinLoop } from '@fustaro/pololu-maestro-controller/dist/samples/sinLoop';
const controller = ;
const servo = ;
//this will run your servo in a sin loop, +/- 40°
//updating every 15ms and doing 2 full loops every second
beginSinLoop(controller, servo, 40, 15, 2);
``