maestro_servo

1.0.6 • Public • Published

Pololu Maestro servo controller npm package

This npm package uses python and javascript to control the Pololu Maestro servo driver.

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

Installing

To install this package in your project, simply run

$ npm install maestro_servo

Testing your servos

To test your servos simply require the package and use the methods available.

You can use the example below

/*
This script is to test the functionality of the servos attached to 
the pololu maestro.

When calling the library, a new object should be made, i.e:
let servo = new ServoController(port);
Where
port = '/dev/ttyACM0' 

Access to the port should be given when using the script.

The default port is '/dev/ttyACM0'

Use the script with node and pass the port used as an argument
*/
const ServoController = require("maestro_servo");
var port = process.argv.slice(2);

let servo = new ServoController(port.toString());
let target = 2000;
let flag = true;


while(true){
    for(i = 0;i<=12;i++){
        servo.setTarget(i,target);
    };
    if (target==8000){
        flag = false;
    };
    if (target==2000){
        flag = true;
    };
    if (flag){
        target += 1000;
    }else{
        target -= 1000;
    };
}

To run the script

sudo node name_of_script.js port

Functions available in the package

close()

Close the Usb serial port.

sendCmd(cmd)

Sends a Pololu command to the servo driver.

setRange(channel,min,max)

Set the given channel max and min value. This is used as a safety measure, and protects the servo from moving outside safety parameters. The Maestro Control Center provided by Pololu, allows the user to set the range of the servo travel and saves it in the driver. Use this method only if you need to control the ranges dynamically from your script. If you set the range to 0 the movement will be unrestricted.

getMin(channel)

Returns the given channel min range value.

getMax(channel)

Returns the given channel max range value.

setTarget(channel,target)

Sets the channel to a target value. Please read the Pololu documentation, to understand the proper values that should be given to each type of hardware attached to the channel.

setSpeed(channel,speed)

Sets the speed of the servo. Zero is the default of the driver and it means that the servo will move at its max speed. To understand how the pololu driver sets the servo speed check the documentation given by Pololu.

setAccel(channel,accel)

Sets the acceleration of the servo. Zero is the default of the driver and it means that the servo will move at its max speed. More information about the acceleration values available here.

getPosition(channel)

Returns the last position sent by the servo when the method is called.

isMoving(channel)

Returns true if the channel is moving, and false if it is not.

getMovingState()

This method returns true if all the servos have reached their target. It's really useful if the speed and acceleration values are restricted.

Using the package

To use the package simply require it and instance a new object with the port used by the driver passed as an argument

ServoController = require ("maestro_servo");
servo = new ServoController(port);

Readme

Keywords

Package Sidebar

Install

npm i maestro_servo

Weekly Downloads

2

Version

1.0.6

License

ISC

Last publish

Collaborators

  • simon.alvarez