Прослушивание только первого входа вывода GPIO на Raspberry pi с Node.js - PullRequest
0 голосов
/ 06 марта 2020

У меня, наверное, очень простой вопрос. У меня 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); 
  }
}

У кого-нибудь есть идеи? Возможно ли остановить прослушивание входов после первого изменения? Как бы я это сделал? Я благодарен за любую помощь и подсказки! приятных выходных!

...