使用Node.js仅侦听Raspberry Pi上GPIO引脚的第一个输入

时间:2020-03-06 13:48:49

标签: node.js raspberry-pi gpio lirc

我可能有一个非常简单的问题。 我有一个运行Raspbian Buster的Raspberry Pi 3 B +型B +连接到GPIO 7(引脚26)上的红外接收器,而LED连接了GPIO 4(引脚7)。我要做的是,一旦接收器接收到红外信号,就打开LED指示灯,如果接收器再次接收到红外信号,则再次关闭LED。它作为Node.js脚本运行。重要的是要提到红外信号应该是随机的,不应被解码。任何信号都可以完成这项工作。为了读取GPIO 7上的IR输入,我使用了rpi-gpio数据包。但是,当我从遥控器发射IR信号时,LED会以高频率打开和关闭(我在猜测IR信号突发的频率)。 因此,我要做的是让LED仅对GPIO引脚上的第一个输入变化做出反应,而不对IR信号代码引起的所有变化做出反应。到目前为止,我拥有的简单代码如下:

//used for IR receiver, refers to pins as pin#
var gpio = require('rpi-gpio');
//used for LED, refers to pins as GPIO#
var Gpio = require('onoff').Gpio;
var LED = new Gpio(4, 'out'); 

//listening for GPIO input changes 
gpio.on('change', function(channel, value) {
    console.log('Channel ' + channel + ' value is now ' + value);
    blinkLED();
});
gpio.setup(26, gpio.DIR_IN, gpio.EDGE_BOTH);


//changing state of LED
function blinkLED() { 
  if (LED.readSync() === 0) { 
    LED.writeSync(1); 
  } else {
    LED.writeSync(0); 
  }
}

有人有什么想法吗?第一次更改后是否有可能停止监听输入?我该怎么办? 感谢您的帮助和提示! 祝您周末愉快!

0 个答案:

没有答案