如何初始化的电路板与传感器输出为一个模块

如何初始化的电路板与传感器输出为一个模块

问题描述:

作为一个基本的例子,我有:如何初始化的电路板与传感器输出为一个模块

//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); 

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

1.临时变量不是board的属性,所以board.temp没有任何意义。

2.您不会导出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(); 
}); 
+0

谢谢你的回应。 – bstein5

+0

谢谢你的回应。第二种方法运行良好,不幸的是它不适合我需要的环境。我需要传递一个带有大约11个传感器/设备/电机/开关等的初始化板对象,以便例如温度传感器可以作为board.temp,电机作为board.motor等访问。已经发现,当它被声明为board.temp时,可以分配临时对象,然后在整个board.on(“ready”...函数内部进行访问,但除此之外,它是未定义的。任何想法如何获得所以我只需要导出电路板对象? – bstein5

+0

你不应该扩展* board *变量,你可能会覆盖一些电路板的属性,这是个坏主意,而应该创建自己的对象来容纳所有的传感器,电机等。如果有空,我会在今天晚些时候更新我的答案,当我到达我的电脑时。 – Molda