2

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

这是我的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);

问题在于节点,无论我做什么,我总是得到相同的 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 的上下文之外执行它,但它仍然无法正常工作。我正在使用截至 2015/04/29 的最新稳定版本的 raspbian,并使用 nodejs v0.12.2 完全更新了系统。

4

1 回答 1

2

节点 GPIO 库的主要问题是要提供的参数是引脚编号而不是 GPIO 编号...

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

GPIO 7 是树莓派上的引脚 26

于 2015-04-30T09:44:42.523 回答