我可能有一个非常简单的问题。 我有一个运行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);
}
}
有人有什么想法吗?第一次更改后是否有可能停止监听输入?我该怎么办? 感谢您的帮助和提示! 祝您周末愉快!