npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

maestro_servo

v1.0.6

Published

Module to control servos with pololu maestro

Downloads

13

Readme

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