2015-04-30 4 views
1

Я строю простую инфракрасную цепь, чтобы подключить мой RPi 2. У меня есть некоторый рабочий код на питоне, который успешно срабатывает, когда мой инфракрасный луч сломан, но я хочу используйте node.js вместо python.Node.JS onoff не правильно подбирает GPIO

Вот мой питон код, просто и красиво:

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, которые позволяют мне использовать GPIO на Pi и решил, что 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 Администратор экспортировать булавку я использую:

[email protected] ~ $ 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.

ответ

2

Основная проблема с узлом библиотеки GPIO является то, что PARAMS дать это PIN-номер не число GPIO ...

Попробуйте использовать контактный номер и обычно он будет работать.

GPIO 7 является штырем 26 на малине pi

+0

Что вы имеете в виду под номером булавки? Номер BCM или физический номер, который я могу подсчитать? – Logan

+0

Я просто редактирую его на https://www.hobbytronics.co.uk/image/data/tutorial/raspberry-pi/gpio-pinout-bplus.jpg –

+0

Я изменил свой код, чтобы посмотреть на вывод 4 (который отображается на контакт 7), и он работает, я соглашусь, как только SO позволит мне :) – Logan