gpt4 book ai didi

node.js - 如何使用Raspberry PI和Nodejs控制继电器?

转载 作者:太空宇宙 更新时间:2023-11-04 02:24:18 53 4
gpt4 key购买 nike

我正在使用 onoff 模块中的 watch 方法来监视输入的状态,如果输入发生任何变化(从 0 到 1 或从 1 到 0),都会调用回调函数,这就是我想要的。

问题是,当我第一次运行应用程序时,如果 main 打开(inputMain 为 1 )或 main 关闭(inputMain 为 0 ),则不会执行回调函数,因为输入的值没有变化。因此,如果 main 打开,我无法调用 main() 函数,直到它关闭然后打开,这个问题仅在我第一次运行应用程序时发生。

我该如何解决这个问题?有没有更好的方法来处理继电器?

var GPIO = require('onoff').Gpio,
inputMain = new GPIO(17,'in','both'),
inputGen1 = new GPIO(4,'in','both'),
inputGen2 = new GPIO(27,'in','both'),
inputGen3 = new GPIO(22,'in','both'),
outMain = new GPIO(11,'high'),
outGen1 = new GPIO(15,'high'),
outGen2P = new GPIO(18,'high'), // Generator 2 power
outGen2SM = new GPIO(23,'high'), //Generator 2 starting motor
outGen2 = new GPIO(24,'high'), // Generator 2 contactor
outGen3P = new GPIO(25,'high'),
outGen3SM = new GPIO(8,'high'),
outGen3 = new GPIO(7,'high'),
objects =[outMain,outGen1,outGen2P,outGen2SM,outGen2,outGen3P,outGen3SM,outGen3];

//检查是否有主电源,这是所有其他电源的引用

 inputMain.watch(function(err,state){
if (state)
main(1);
});

//切换到主接触器

function main (arg) {
console.log('test');
if (arg == 1) {
value = [0,1,1,1,1,1,1,1];}
else {
value = [0,0,0,0,0,0,0,0];
}
out(value);

}

//根据数组的值打开所有继电器...

function out(value) {

for ( var i = 0; i< value.length; i++) {

if (value[i] == 0 ) {
var a = objects[i];
} else {

objects[i].writeSync(value[i]);
}
}
setTimeout(function() {
a.writeSync(0);
},5000);
}

最佳答案

恐怕您需要为此调用 read 或 readSync。

...
outGen3SM = new GPIO(8,'high'),
outGen3 = new GPIO(7,'high'),
objects =[outMain,outGen1,outGen2P,outGen2SM,outGen2,outGen3P,outGen3SM,outGen3];
//Forces the first output update
main(inputMain.readSync());

关于node.js - 如何使用Raspberry PI和Nodejs控制继电器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31395820/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com