我有一个可能非常简单的问题。我有一个运行 Raspbian Buster 的 Raspberry Pi 3 型号 B+,连接到 GPIO 7(引脚 26)上的红外接收器和连接到 GPIO 4(引脚 7)的 LED。我想要做的是在接收器接收到红外信号后立即打开 LED,如果接收器再次接收到信号,则再次关闭。这是作为 Node.js 脚本运行的。值得一提的是,红外信号应该是随机的,不应该被解码。任何信号都应该完成这项工作。为了读取 GPIO 7 上的 IR 输入,我使用了 rpi-gpio 数据包。但是当我从遥控器发射红外信号时,LED 会以高频打开和关闭(我猜是红外信号突发的频率)。所以我想做的是让 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);
}
}
有没有人有任何想法?第一次更改后是否可以停止监听输入?我该怎么做?我很感激任何帮助和提示!周末愉快!