2

RPi 2 にプラグインするための単純な赤外線ブレークビーム回路を構築しています。赤外線ビームが遮断されたときに正常に動作するコードが Python にいくつかありますが、Python の代わりに node.js を使用したいと考えています。

これが私の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()

ここで、Pi で GPIO を使用できるようにする node.js のさまざまなパッケージを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 のコンテキストから実行しようとしましたが、まだ機能しません。nodejs v0.12.2を使用して、完全に更新されたシステムで2015/04/29の時点でraspbianの最新の安定ビルドを使用しています。

4

1 に答える 1

2

ノード GPIO ライブラリの主な問題は、指定するパラメータが GPIO 番号ではなくピン番号であることです...

ピン番号を使用してみてください。通常は機能します。

GPIO 7 は、ラズベリーパイのピン 26 です。

于 2015-04-30T09:44:42.523 に答える