-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Board
The Board
class constructs objects that represent the physical board itself. All device objects depend on an initialized and ready board object.
Johnny-Five (sans IO Plugin) has been tested on, but is not limited to, the following boards:
- Arduino UNO
- Arduino Leonardo
- Arduino MEGA
- Arduino FIO
- Arduino Pro
- Arduino Pro Mini
- Arduino Nano
- TinyDuino
- BotBoarduino
- Dagu Micro Magician v2
- Red Back Spider
- TI Launchpad (with Energia Firmata)
For non-Arduino based projects, a number of IO Plugins are available:
- Beagle Bone Black
- Blend Micro
- Intel Galileo, Edison
- LightBlue Bean
- Linino One
- pcDuino
- Pinoccio
- Raspberry Pi
- Spark Core
- Electric Imp
- RemoteIO (Wrapper to remote control another IO class)
- BoardIO (Generic IO Plugin class to make your own!)
See also: Multi-Board Support
-
options Optional object of themselves optional parameters.
Property Type Value(s) Description Required id Number, String Any User definable identification no port String or object "/dev/ttyAM0", "COM1", new SerialPort() Path or name of device port/COM or SerialPort object no repl Boolean true, false Set to false
to disable REPLno
{
ready: A boolean value that indicates the readiness of the physical board
io: A reference to the IO protocol layer.
id: A user definable id value. Defaults to a generated uid
pins: An array of all pin capabilities objects
port: A string value of the device path or COM address
}
The easiest way to initialize a board object is to call the Board
constructor function with new
. Don't worry about knowing your device's path or COM port, Johnny-Five will figure out which USB the board is plugged into and connect to that automatically.
new five.Board();
You may optionally specify the port by providing it as a property of the options object parameter:
new five.Board({ port: "/dev/tty.usbmodemNNNN" });
or
new five.Board({ port: "COM1" });
or you can specify a SerialPort object by providing it as a property of the options object parameter:
var SerialPort = require("serialport").SerialPort;
var five = require("johnny-five");
var board = new five.Board({
port: new SerialPort("COM4", {
baudrate: 9600,
buffersize: 1
})
});
A basic, but complete example usage of the Board
constructor:
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function() {
// Create an Led on pin 13
var led = new five.Led(13);
// Strobe the pin on/off, defaults to 100ms phases
led.strobe();
});
-
repl This is a property of the board object that represents the automatically generated REPL that's created when a Johnny-Five program is executed. This object has an
inject
method that may be called as many times as desired. -
repl.inject(object) Inject objects or values, from the program, into the REPL session.
var five = require("johnny-five"); var board = new five.Board(); board.on("ready", function() { // Initialize an Led object that can be controlled from the REPL session this.repl.inject({ led: new five.Led(13) }); }); /* From the terminal... $ node program.js 1423012815316 Device(s) /dev/cu.usbmodem1421 1423012818908 Connected /dev/cu.usbmodem1421 1423012818908 Repl Initialized >> (Since the led object is available here...) >> led.on(); >> led.off(); */
-
pinMode(pin, mode) Set the
mode
of a specificpin
, one of INPUT, OUTPUT, ANALOG, PWM, SERVO. Mode constants are exposed via thePin
classMode Value Constant INPUT 0 Pin.INPUT OUTPUT 1 Pin.OUTPUT ANALOG 2 Pin.ANALOG PWM 3 Pin.PWM SERVO 4 Pin.SERVO // Set a pin to INPUT mode var five = require("johnny-five"); var board = new five.Board(); board.on("ready", function() { // pin mode constants are available on the Pin class this.pinMode(13, five.Pin.INPUT); });
-
analogWrite(pin, value) Write an analog value (0-255) to a digital
pin
.var five = require("johnny-five"); var board = new five.Board(); board.on("ready", function() { // Assuming an Led is attached to pin 9, // this will turn it on at full brightness // PWM is the mode used to write ANALOG // signals to a digital pin this.pinMode(9, five.Pin.PWM); this.analogWrite(9, 255); });
-
analogRead(pin, handler(voltage)) Register a handler to be called whenever the board reports the voltage value (0-1023) of the specified analog
pin
.var five = require("johnny-five"); var board = new five.Board(); board.on("ready", function() { // Assuming a sensor is attached to pin "A1" this.pinMode(1, five.Pin.ANALOG); this.analogRead(1, function(voltage) { console.log(voltage); }); });
-
digitalWrite(pin, value) Write a digital value (0 or 1) to a digital
pin
.var five = require("johnny-five"); var board = new five.Board(); board.on("ready", function() { // Assuming an Led is attached to pin 13, this will turn it on this.pinMode(13, five.Pin.OUTPUT); this.digitalWrite(13, 1); });
-
digitalRead(pin, handler(value)) Register a handler to be called whenever the board reports the value (0 or 1) of the specified digital
pin
.var five = require("johnny-five"); var board = new five.Board(); board.on("ready", function() { // Assuming a button is attached to pin 9 this.pinMode(9, five.Pin.INPUT); this.digitalRead(9, function(value) { console.log(value); }); });
-
shiftOut(dataPin, clockPin, isBigEndian, value) Write a byte to
dataPin
, followed by toggling theclockPin
. Understanding Big and Little Endian Byte Order -
wait(ms, handler()) Register a handler to be called once in another execution turn and after the amount of time specified in milliseconds has passed.
var five = require("johnny-five"); var board = new five.Board(); board.on("ready", function() { // Assuming an Led is attached to pin 13 this.pinMode(13, five.Pin.OUTPUT); // Turn it on... this.digitalWrite(13, 1); this.wait(1000, function() { // Turn it off... this.digitalWrite(13, 0); }); });
-
loop(ms, handler()) Register a handler to be called repeatedly in another execution turn, every time the specified milliseconds has lapsed.
var five = require("johnny-five"); var board = new five.Board(); board.on("ready", function() { var byte; // Assuming an Led is attached to pin 13 this.pinMode(13, five.Pin.OUTPUT); // Homemade strobe this.loop(500, function() { this.digitalWrite(13, (byte ^= 0x01)); }); });
-
connect This event will be emitted once the program has "connected" to the board. This may be immediate, or after some amount of time, but is always asynchronous.
-
ready This event will be emitted after the connect event and only when the
Board
instance object has completed any hardware initialization that must take place before the program can operate. This process is asynchronous, and completion is signified to the program via a "ready" event.