How to Use a Servo With Tessel

by SelkeyMoonbeam in Circuits > Robots

6958 Views, 82 Favorites, 0 Comments

How to Use a Servo With Tessel

servo (1).JPG

Tessel is a microcontroller you program in JavaScript. It's like Arduino, but designed to be easier to use and web-friendly.

Here's what you need:

  1. Tessel
  2. Servo module
  3. Servo motor (one comes with the servo module, but there's room for 16 of them on there.)

Install Tessel

ruler.JPG

If you haven't used a Tessel before, you should go install it.

Plug in the Servo to the Module

servo_servo.jpeg

Plug servo into port "1" on the module as shown.

  • the brown wire (ground) goes to -
  • the red wire (power) goes to +
  • the yellow wire (signal) goes to S

Power the Module

servo_power.png

Plug 5V adapter into the barrel jack on the servo module, then plug into wall power.

Plug the Module Into Tessel

servo.jpeg

It's best to unplug Tessel from power while plugging in modules.

Plug the servo module into Tessel port A with the hexagon/icon side down and the electrical components on the top, then plug Tessel into your computer via USB.

Install the Servo Module

servo.jpg

Install by typing `npm install servo-pca9685` into the command line.

Save the Code

Screen Shot 2014-08-22 at 12.56.27 PM.png

Save this code in a text file called servo.js:

// Any copyright is dedicated to the Public Domain.
// http://creativecommons.org/publicdomain/zero/1.0
*********************************************
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
  });
});

Play!

Screen Shot 2014-08-22 at 12.56.37 PM.png

In your command line, `tessel run servo.js`

Watch your servo move!