如何将带有传感器的初始化板作为模块导出

作为一个基本的例子,我有:

//tempModule.js var five = require("johnny-five"); var board = new five.Board(); var temp; board.on("ready", function() { temp = new five.Temperature({ pin: "A2", controller: "AD8495" }); }); module.export = board; 

哪些被调用: //moduleTest.js

 var board = require('tempModule.js'); setInterval(function(){ console.log("Temp: " + board.temp); },500); 

此代码当前返回“未定义”。 如何构buildtempModule.js,以便连接到电路板的传感器的数据可以在其他程序中使用?

这个临时variables不是board的属性,所以board.temp没有意义。

你不输出温度,所以你不能访问它。

所以你需要导出临时像

 module.exports = temp; 

或使用

 exports.board = board; exports.temp = temp; 

然后

 var module = require('tempModule.js'); 

并使用它来访问它

 var board = module.board; var temp = module.temp; 

如果上述仍然不起作用,那么还有另一种方法

tempModule.js

 var five = require("johnny-five"); var board = new five.Board(); function init(cb){ board.on("ready", function() { var temp = new five.Temperature({ pin: "A2", controller: "AD8495" }); cb(temp); }); } exports.init = init; 

像这样使用它

 var tempModule = require('tempModule.js'); tempModule.init(function (temp){ temp.on("data", function() { console.log(this.celsius + "°C", this.fahrenheit + "°F"); }); }); 

更新:增加了另一个例子

 // boardModule.js var five = require("johnny-five"); var b = new five.Board(); var board = {}; function init(cb){ b.on("ready", function() { board.temp1 = new five.Temperature({ pin: "A2", controller: "AD8495" }); board.temp2 = new five.Temperature({ pin: "A3", controller: "AD8495" }); board.temp3 = new five.Temperature({ pin: "A4", controller: "AD8495" }); board.motor1 = new five.Motor({ pin: 5 }); cb(board); }); } exports.init = init; // testModule.js var boardModule = require('boardModule.js'); boardModule.init(function (board){ board.temp1.on("data", function() { console.log('temp1:', this.celsius + "°C", this.fahrenheit + "°F"); }); board.temp2.on("data", function() { console.log('temp2:', this.celsius + "°C", this.fahrenheit + "°F"); }); board.temp3.on("data", function() { console.log('temp3:', this.celsius + "°C", this.fahrenheit + "°F"); }); board.motor1.on("start", function() { console.log("start", Date.now()); // Demonstrate motor stop in 2 seconds board.wait(2000, function() { board.motor1.stop(); }); }); board.motor1.on("stop", function() { console.log("stop", Date.now()); }); board.motor1.start(); });