Node.JS onoff无法正确获取GPIO

时间:2015-04-30 09:40:00

标签: javascript node.js raspberry-pi raspbian web-ide

我正在构建一个简单的红外断点电路来插入我的RPi 2.我在python中有一些工作代码,当我的红外光束被破坏时成功拾取,但我想使用node.js而不是python。 / p>

这是我的python代码,很简单:

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.IN)

try:
        while True:
                print(GPIO.input(7))
                time.sleep(0.01)

except KeyboardInterrupt:
        GPIO.cleanup()

现在我在node.js的不同包上做了一些阅读,让我在Pi上使用GPIO,并认为onoff看起来是最好的,因为它与我想要使用的回调异步工作。

这是我尝试用于节点的代码:

var Gpio = require('onoff').Gpio,
  infrared = new Gpio(7, 'in');
var interval = setInterval(function()
{
   console.log(infrared.readSync() ^ 1); 
}, 100);

function exit() {
  infrared.unexport();
  process.exit();
}

process.on('SIGINT', exit);

问题在于节点I总是得到相同的0信号,无论我做什么。我尝试通过使用一个简单的按钮来消除我的电路问题,即使这样也行不通(我使用python测试了相同的电路并且工作正常)。

这甚至不使用它的异步部分(由于不会发生中断,因此也无效)。

我尝试使用GPIO Admin导出我正在使用的引脚:

pi@counter ~ $ sudo gpio-admin export 7
gpio-admin: failed to change group ownership of /sys/devices/virtual/gpio/gpio7/direction: No such file or directory

/sys/devices/virtual/gpio/在我的系统上不存在。

我是否必须做一些特定的事情才能让节点与我的GPIO很好地配合?

请注意,我使用Adafruit WebIDE编写了这个,是的,我尝试在IDE的上下文中执行它,但它仍然不起作用。我正在使用最新的版本的raspbian,从2015/04/29开始,使用nodejs v0.12.2完全更新系统。

1 个答案:

答案 0 :(得分:2)

节点GPIO库的主要问题是给出的参数是引脚号而不是GPIO号...

尝试使用密码,通常它会起作用。

GPIO 7是覆盆子pi上的引脚26