mecanum

This library is just a helper to work with a mecanum wheel configuration. Set the values for cw, ccw, and stop and the mecanum helper will spit out the values to set each motor/servo at.

Usage no npm install needed!

<script type="module">
  import mecanum from 'https://cdn.skypack.dev/mecanum';
</script>

README

Mecanum

This library is just a helper to work with a mecanum wheel configuration. Set the values for cw, ccw, and stop and the mecanum helper will spit out the values to set each motor/servo at.

To install

npm install mecanum

Require it in your code.

var Mecanum = require('mecanum')
// Set the base values for your motor or servo

Set the values for cw, ccw, and stop and the mecanum helper will spit out the values to set each motor/servo at.

var mec = new Mecanum({
    'cw': 60,
    'ccw': 40,
    'stop': 51,
  });

Call as a function

var values = mec.move('forward');

Or as a callback

mec.move('forward', function(data){
    console.log(data);
  });

Returns

{ "LF": 60,
  "LB": 60,
  "RF": 60,
  "RB": 60
}

Directions

        'forward'
        'backward'
        'left'
        'right'
        'ne'
        'nw'
        'se'
        'sw'
        'stop'
        'cw'
        'ccw'

Use the values to set your motors.

 //This part will be different based on what robotics library
 //you are using, but it gives you the idea.

left_front_motor.speed(values.LF);
left_back_motor.speed(values.LB);
right_front_motor.speed(values.RF);
right_back_motor.speed(values.RB);

With johnny-five continuous servos

var five = require("johnny-five");
var Mecanum = require('mecanum')
// Don't provide options and it will default to servo settings
// which is to say it will return string 'cw', 'ccw', or 'stop'
var mec = new Mecanum();
var board = new five.Board();

  board.on("ready", function() {
    var leftb  = new five.Servo.Continuous(3).stop();
    var leftf  = new five.Servo.Continuous(5).stop();
    var rightf = new five.Servo.Continuous(6).stop();
    var rightb = new five.Servo.Continuous(9).stop();

    mec.move('forward', function(values){
      leftf[values.LF];
      leftb[values.LB];
      rightf[values.RF];
      rightb[values.RB];
    });  
  });

With Johnny-Five ESC

var five = require("johnny-five");
var Mecanum = require('mecanum')
var mec = new Mecanum({
    'cw': 60,
    'ccw': 40,
    'stop': 51,
  });

  var board = new five.Board();

  board.on("ready", function() {
    var leftf = new five.ESC({
        device: "FORWARD_REVERSE",
        neutral: 50,
        pin: 9
      });

      var leftb = new five.ESC({
        device: "FORWARD_REVERSE",
        neutral: 50,
        pin: 5
      });

      var rightb = new five.ESC({
        device: "FORWARD_REVERSE",
        neutral: 50,
        pin: 3
      });

      var rightf = new five.ESC({
        device: "FORWARD_REVERSE",
        neutral: 50,
        pin: 6
      });

    mec.move('forward', function(values){
      leftf.speed(values.LF);
      leftb.speed(values.LB);
      rightf.speed(values.RF);
      rightb.speed(values.RB);
    });  
  });