UNPKG

johnny-five

Version:

Firmata based Arduino Programming Framework.

236 lines (194 loc) 6.81 kB
var SerialPort = require("./mock-serial").SerialPort, five = require("../lib/johnny-five.js"), serial = new SerialPort("/path/to/fake/usb"), board = new five.Board({ mock: serial }); var modes, capabilities; modes = { INPUT: 0x00, OUTPUT: 0x01, ANALOG: 0x02, PWM: 0x03, SERVO: 0x04 }; // Make mode value->type mappings Object.keys( modes ).forEach(function( key ) { modes[ modes[key] ] = key; }); capabilities = { uno: [ // RX/TX { supportedModes: [], mode: 1, value: 0 }, { supportedModes: [], mode: 1, value: 0 }, // DIGITAL { supportedModes: [ 0, 1, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 3, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 3, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 3, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 3, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 3, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 3, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 4 ], mode: 1, value: 0 }, // ANALOG { supportedModes: [ 0, 1, 2 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 2 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 2 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 2 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 2 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 2 ], mode: 1, value: 0 } ], mega: [ // RX/TX { supportedModes: [], mode: 1, value: 0 }, { supportedModes: [], mode: 1, value: 0 }, // DIGITAL { supportedModes: [ 0, 1, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 3, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 3, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 3, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 3, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 3, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 3, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 4 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 4 ], mode: 1, value: 0 }, // ANALOG { supportedModes: [ 0, 1, 2 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 2 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 2 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 2 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 2 ], mode: 1, value: 0 }, { supportedModes: [ 0, 1, 2 ], mode: 1, value: 0 } ] }; /* UNO --------------------------------------------------------- TOTAL_ANALOG_PINS 6 TOTAL_PINS 20 // 14 digital + 6 analog VERSION_BLINK_PIN 13 IS_PIN_DIGITAL(p) ((p) >= 2 && (p) <= 19) IS_PIN_ANALOG(p) ((p) >= 14 && (p) < 14 + TOTAL_ANALOG_PINS) IS_PIN_PWM(p) digitalPinHasPWM(p) IS_PIN_SERVO(p) (IS_PIN_DIGITAL(p) && (p) - 2 < MAX_SERVOS) IS_PIN_I2C(p) ((p) == 18 || (p) == 19) PIN_TO_ANALOG(p) ((p) - 14) --------------------------------------------------------- MEGA --------------------------------------------------------- TOTAL_ANALOG_PINS 16 TOTAL_PINS 70 // 54 digital + 16 analog VERSION_BLINK_PIN 13 IS_PIN_DIGITAL(p) ((p) >= 2 && (p) < TOTAL_PINS) IS_PIN_ANALOG(p) ((p) >= 54 && (p) < TOTAL_PINS) IS_PIN_PWM(p) digitalPinHasPWM(p) IS_PIN_SERVO(p) ((p) >= 2 && (p) - 2 < MAX_SERVOS) IS_PIN_I2C(p) ((p) == 20 || (p) == 21) PIN_TO_ANALOG(p) ((p) - 54) --------------------------------------------------------- */ exports["UNO Pin Capabilities"] = { setUp: function( done ) { board.pins = new five.Board.Pins({ pins: capabilities.uno, analogPins: [ 14, 15, 16, 17, 18, 19 ] }); done(); }, isDigital: function( test ) { test.expect(7); // RX/TX: false test.ok( !board.pins.isDigital(0) ); test.ok( !board.pins.isDigital(1) ); // In Range: true test.ok( board.pins.isDigital(2) ); test.ok( board.pins.isDigital(13) ); test.ok( board.pins.isDigital(19) ); // Out of Range: false test.ok( !board.pins.isDigital(30) ); test.ok( !board.pins.isDigital(-1) ); test.done(); }, isAnalog: function( test ) { test.expect(7); // RX/TX: false test.ok( !board.pins.isAnalog(0) ); test.ok( !board.pins.isAnalog(1) ); // In Range: true test.ok( board.pins.isAnalog(14) ); test.ok( board.pins.isAnalog(15) ); test.ok( board.pins.isAnalog(19) ); // Out of Range: false test.ok( !board.pins.isAnalog(30) ); test.ok( !board.pins.isAnalog(-1) ); test.done(); }, isPWM: function( test ) { test.expect(7); // RX/TX: false test.ok( !board.pins.isPwm(0) ); test.ok( !board.pins.isPwm(1) ); // In Range: true test.ok( board.pins.isPwm(9) ); test.ok( board.pins.isPwm(10) ); test.ok( board.pins.isPwm(11) ); // Out of Range: false test.ok( !board.pins.isPwm(30) ); test.ok( !board.pins.isPwm(-1) ); test.done(); }, isServo: function( test ) { test.expect(7); // RX/TX: false test.ok( !board.pins.isServo(0) ); test.ok( !board.pins.isServo(1) ); // In Range: true test.ok( board.pins.isServo(9) ); test.ok( board.pins.isServo(10) ); test.ok( board.pins.isServo(11) ); // Out of Range: false test.ok( !board.pins.isServo(30) ); test.ok( !board.pins.isServo(-1) ); test.done(); }, isInput: function( test ) { test.expect(6); // RX/TX: false test.ok( !board.pins.isInput(0) ); test.ok( !board.pins.isInput(1) ); // In Range: true test.ok( board.pins.isInput(14) ); test.ok( board.pins.isInput(9) ); // Out of Range: false test.ok( !board.pins.isInput(30) ); test.ok( !board.pins.isInput(-1) ); test.done(); }, isOutput: function( test ) { test.expect(6); // RX/TX: false test.ok( !board.pins.isOutput(0) ); test.ok( !board.pins.isOutput(1) ); // In Range: true test.ok( board.pins.isOutput(14) ); test.ok( board.pins.isOutput(9) ); // Out of Range: false test.ok( !board.pins.isOutput(30) ); test.ok( !board.pins.isOutput(-1) ); test.done(); }, translate: function( test ) { test.expect(3); test.equal( five.Board.Pins.translate("I0", "UNO"), "A0" ); test.equal( five.Board.Pins.translate("I0", "uno"), "A0" ); test.equal( five.Board.Pins.translate("I0", "?"), "I0" ); test.done(); } };