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の最新の安定ビルドを使用しています。