我在javascript编程arduino板。我正在尝试使用约翰尼五库连接多个arduino板。我遵循了约翰尼- 5的文档,我可以同时在两个板上闪动13。
然而,我的问题是我想一次控制一个led。我如何具体初始化每个板上的led ?
文档中有很多Boards
(注意是复数)类的例子。我直接复制了以下内容:
Boards
类构造了一个包含多个board对象的集合对象。如果没有传递参数,Board
对象将按照系统枚举它们的顺序为每个检测到的板创建。
参见:Board
参数- ports端口对象或端口地址字符串的列表。端口对象可以有以下属性:
初始化多板
初始化多个板对象的最简单方法是用new
调用Boards
构造函数。不用担心知道设备的路径或COM端口,Johnny-Five会自动找出兼容板正在使用哪些usb。
// Create 2 board instances with IDs "A" & "B"
// (ports will be initialized in device enumeration order)
new five.Boards([ "A", "B" ]);
或
// Create two board instances on ports
// "/dev/cu.usbmodem621" and
// "/dev/cu.usbmodem411"
new five.Boards([ "/dev/cu.usbmodem621", "/dev/cu.usbmodem411" ]);
或
var ports = [
{ id: "A", port: "/dev/cu.usbmodem621" },
{ id: "B", port: "/dev/cu.usbmodem411" }
];
new five.Boards(ports);
董事会准备
一旦板对象被初始化,它们必须通过一组握手步骤连接到物理板,一旦完成,板就准备好与程序通信。这个过程是异步的,通过一个"ready"事件通知程序。
// Create 2 board instances with IDs "A" & "B"
new five.Boards([ "A", "B" ]).on("ready", function() {
// Both "A" and "B" are initialized
// (connected and available for communication)
});
通过提供显式的端口路径覆盖此:
var ports = [
{ id: "A", port: "/dev/cu.usbmodem621" },
{ id: "B", port: "/dev/cu.usbmodem411" }
];
new five.Boards(ports).on("ready", function() {
// Both "A" and "B" are initialized
// (connected and available for communication)
});
使用Boards
构造函数的基本但完整的用法示例:
// Create 2 board instances with IDs "A" & "B"
new five.Boards([ "A", "B" ]).on("ready", function() {
// Both "A" and "B" are initialized
// (connected and available for communication)
// |this| is an array-like object containing references
// to each initialized board.
this.each(function(board) {
// Initialize an Led instance on pin 13 of
// each initialized board and strobe it.
new five.Led({ pin: 13, board: board }).strobe();
});
});
通过提供显式的端口路径覆盖此:
var ports = [
{ id: "A", port: "/dev/cu.usbmodem621" },
{ id: "B", port: "/dev/cu.usbmodem411" }
];
new five.Boards(ports).on("ready", function() {
// Both "A" and "B" are initialized
// (connected and available for communication)
// |this| is an array-like object containing references
// to each initialized board.
this.each(function(board) {
// Initialize an Led instance on pin 13 of
// each initialized board and strobe it.
new five.Led({ pin: 13, board: board }).strobe();
});
});
说明当使用多个单板时,所有的设备类必须初始化,并显式引用它们将关联到的单板对象。这在前面的代码示例中进行了说明。
APIeach(callback(board, index))为每个board对象调用一次函数
…
目前没有提到的一件事,我将更新这样做,ready
处理程序中的this
是一个类似数组的对象,包含对每个初始化板的引用,按照它们被创建的顺序:
var ports = [
{ id: "A", port: "/dev/cu.usbmodem621" },
{ id: "B", port: "/dev/cu.usbmodem411" }
];
// Create 2 board instances with IDs "A" & "B"
new five.Boards(ports).on("ready", function() {
// Both "A" and "B" are initialized
// (connected and available for communication)
this[0]; // <-- this is board A reference
this[1]; // <-- this is board B reference
});
我想你可以使用他们的id
s访问每个板。或者您可以实例化两个具有不同名称的板,例如:
var five = require("johnny-five"),
boardNumberOne = new five.Board();
boardNumberTwo = new five.Board();