Coder Social home page Coder Social logo

servo-pca9685's Introduction

Servo

Code of Conduct

Driver for the servo-pca9685 Tessel servo module, capable of driving up to 16 servos at once. Can also be used to drive other devices which accept a 3.3 V PWM signal (most motor controllers, LEDs, gate drivers, etc.). The hardware documentation for this module can be found here.

If you run into any issues you can ask for support on the Servo Module Forums.

Installation

npm install servo-pca9685

Example

/*********************************************
This servo module demo turns the servo around
1/10 of its full rotation  every 500ms, then
resets it after 10 turns, reading out position
to the console at each movement.
*********************************************/

var tessel = require('tessel');
var servolib = require('servo-pca9685'); 

var servo = servolib.use(tessel.port['A']);

var servo1 = 1; // We have a servo plugged in at position 1

servo.on('ready', function () {
  var position = 0;  //  Target position of the servo between 0 (min) and 1 (max).

  //  Set the minimum and maximum duty cycle for servo 1.
  //  If the servo doesn't move to its full extent or stalls out
  //  and gets hot, try tuning these values (0.05 and 0.12).
  //  Moving them towards each other = less movement range
  //  Moving them apart = more range, more likely to stall and burn out
  servo.configure(servo1, 0.05, 0.12, function () {
    setInterval(function () {
      console.log('Position (in range 0-1):', position);
      //  Set servo #1 to position pos.
      servo.move(servo1, position);

      // Increment by 10% (~18 deg for a normal servo)
      position += 0.1;
      if (position > 1) {
        position = 0; // Reset servo position
      }
    }, 500); // Every 500 milliseconds
  });
});

Methods

# servo.configure( whichServo, minPWM, maxPWM, callback(err) ) Sets the PWM max and min for the specified servo.

# servo.move( whichServo, positionOrSpeed, callback(err) ) positionOrSpeed is a value between 0 and 1. On a normal servo, this value is the position to move to as a percent of the total available rotational range. On a continuous rotation servo, this value represents the rotation speed: 0 is fast in one direction, 1 is fast in the other direction, and 0.5 is stopped.

# servo.read( whichServo, callback(err, reading) ) Reads the current approximate position target for the specified servo.

# servo.setDutyCycle( whichServo, on, callback(err) ) Sets the duty cycle for the specified servo. on is duty cycle uptime, range from 0-1.

# servo.setModuleFrequency( Hertz, callback(err) ) Sets the PWM frequency in Hz for the PCA9685 chip.

Events

# servo.on( 'error', callback(err) ) Emitted upon error.

# servo.on( 'ready', callback() ) Emitted upon first successful communication between the Tessel and the module.

Hardware/Advanced usage

  • The servos used in conjunction with this module should be powered through the 5.5 mm barrel jack.
  • The physical module is marked with "S", "+", and "-". These correspond to signal, power, and GND. On most servos, the GND wire will be black/brown and the signal wire will be yellow/white. Red typically denotes 5 V power.
  • This module can be used to drive most speed controllers, which in turn can control a wide variety of actuators. It can also be used to drive small LEDs with current limiting resistors in series.
  • The bare square pads by the barrel jack allow the addition of a capacitor to the input power rail if desired. The pad closest to the board edge is connected to GND, the other to the barrel jack's positive pin. This addition is not required for proper module functionality.

License

MIT or Apache 2.0, at your option

servo-pca9685's People

Contributors

brihijoshi avatar ekolker avatar evansimpson avatar frijol avatar jiahuang avatar johnnyman727 avatar kevinmehall avatar pmcote avatar scottgonzalez avatar tcr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

servo-pca9685's Issues

Tests don't run properly

It seems that either the tests don't run properly or there's more needed than just running npm test.

From a fresh clone of master, after installing dependencies, this is the output I get:

servo-pca9685 (master) $ npm test

> [email protected] test /Users/scottgonzalez/Projects/servo-pca9685
> tinytap -e 'tessel run {} ${SERVO_PORT}' test/*.js

1..2
not ok 1 - test/apiTest.js
not ok 2 - test exited with code 1
npm ERR! Test failed.  See above for more details.

readConfiguration should be a thing

Right now there does not exist a clean way to have the servo controller tell you what the max/min PWM values are for a given servo/channel.

CR Servo - 0.5 move does not stop the servo

I'm still pretty new with this, so bear with me - I have a CR servo, and it rotates at any value between 0 and 1. However, .5 does not seem to stop the servo, as the docs indicate. It continues clockwise at a slow speed. Am I doing something wrong?

servo.move(servo1, 1); //moves clockwise at full speed
setTimeout(function(){servo.move(servo1, 0.5)}, 2000); //moves clockwise at slow speed

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.