У меня, наверное, очень простой вопрос. У меня Raspberry Pi 3 модель B + с Raspbian Buster, подключенным к инфракрасному приемнику на GPIO 7 (контакт 26), и светодиод, подключенный к GPIO 4 (контакт 7). Я хочу включить светодиод, как только приемник получит инфракрасный сигнал, и снова выключить его, если он снова получит сигнал. Это работает как Node.js скрипт. Важно отметить, что инфракрасный сигнал должен быть случайным и не должен декодироваться. Любой сигнал должен делать работу. Чтобы прочитать ИК вход на GPIO 7, я использую пакет rpi-gpio. Но когда я запускаю ИК-сигнал от пульта дистанционного управления, светодиод включается и выключается с высокой частотой (я предполагаю, что частота всплесков ИК-сигнала). Поэтому я хочу, чтобы светодиод реагировал только на самое первое изменение входа на выводе GPIO и не реагировал на все изменения, вызванные кодом ИК-сигнала. На данный момент у меня есть простой код:
//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);
}
}
У кого-нибудь есть идеи? Возможно ли остановить прослушивание входов после первого изменения? Как бы я это сделал? Я благодарен за любую помощь и подсказки! приятных выходных!