hybridgroup/cylon-sphero

View on GitHub
examples/pebble/pebble.markdown

Summary

Maintainability
Test Coverage
# Sphero + Pebble

For this Cylon example, we're going to hook up to a Sphero,
and control it using pebble accelerometer.

Before we get started, make sure you've got the `cylon-sphero` module installed.

To get started, let's import the Cylon module:

    var Cylon = require('cylon');

Then we setup API to listen on port 8080:

    Cylon.api({
      host: '0.0.0.0',
      port: '8080',
      ssl:  false
    });

With that set up, we can start defining our robot:

    Cylon.robot({

We setup connections an devices for sphero and pebble:

    connections: {
      sphero: { adaptor: 'sphero', port: '/dev/tty.Sphero-YBW-RN-SPP' },
      pebble: { adaptor: 'pebble' }
    },

    devices: {
      sphero: { driver: 'sphero' },
      pebble: { driver: 'pebble' }
    },

Then we create and set variable heading and speed to 0:

    heading: 0,
    speed:  0,

And now we can start defining our robot's work.

    work: function(my) {

Every second we will change update sphero direction using calculated heading value:

    every((0.1).second(), function() {
      my.sphero.roll(100, my.heading);
    });

When we receive data from pebble accelerometer we calculate new heading value:

    my.pebble.on('accel', function(data) {
      values = data.split(",");
      x      = values[0];
      y      = values[1];


      my.speed   = Math.round(Math.max(Math.abs(x)/6, Math.abs(y)/6));
      my.heading = Math.round(((180.0 - (Math.atan2(y,x) * (180.0 / Math.PI)))));
    });

And with all that done, we can finally start the robot.

    }).start();