hybridgroup/cylon-joystick

View on GitHub
examples/xbox360/xbox360.markdown

Summary

Maintainability
Test Coverage
# Joystick - Xbox 360 Controller

For this Cylon example, we'll demonstrate how to get input from a wired Xbox 360
controller.

Before we get started, make sure you've got `cylon-joystick` installed via NPM
so we can connect to the controller.

First, let's load up Cylon:

    var Cylon = require('cylon');

With that done, we can start defining our new robot.

    Cylon.robot({

We'll be setting up a connection to our 360 controller, and also setting the
controller up as a device the robot can talk to:

      connections: {
        joystick: { adaptor: 'joystick' }
      },

      devices: {
        controller: { driver: 'xbox-360' }
      },

With our connection to the controller established, we'll tell it what to do:

      work: function(my) {

Let's ask our robot to tell us when the face buttons on the controller (A, B, X,
Y) are pressed and released:

        ["a", "b", "x", "y"].forEach(function(button) {
          my.controller.on(button + ":press", function() {
            console.log("Button " + button + " pressed.");
          });

          my.controller.on(button + ":release", function() {
            console.log("Button " + button + " released.");
          });
        });

Next up, when someone moves the left and right analog sticks, or presses the
triggers, let's print their current positions.

        my.controller.on("left_x:move", function(pos) {
          console.log("Left Stick - X:", pos);
        });

        my.controller.on("left_y:move", function(pos) {
          console.log("Left Stick - Y:", pos);
        });

        my.controller.on("right_x:move", function(pos) {
          console.log("Right Stick - X:", pos);
        });

        my.controller.on("right_y:move", function(pos) {
          console.log("Right Stick - Y:", pos);
        });

        my.controller.on("lt:move", function(pos) {
          console.log("Left Trigger: ", pos);
        });

        my.controller.on("rt:move", function(pos) {
          console.log("Right Trigger: ", pos);
        });
      }
    });

And with our work defined, we can tell Cylon to start up our Robot:

    Cylon.start();