rpi-gpio引脚始终为高/低

时间:2015-05-14 20:39:47

标签: node.js raspberry-pi gpio

我们使用rpi-gpio和node.js来读/写 覆盆子版1针。

我们有一个连接到gnd(引脚3)和gpio4(引脚7)的引脚。

使用write完美运行:

gpio.setup(7, gpio.DIR_OUT, write);

function write() {
    gpio.write(7, true, function(err) {
        if (err) throw err;
        console.log('Written to pin');
    });
}

虽然使用了读取功能

gpio.setup(7, gpio.DIR_IN, readInput);

function readInput() {
    gpio.read(7, function(err, value) {
        console.log('The value is ' + value);
    });
}

导致以下行为:

1)LED已关闭 2)gpio引脚的状态始终为真

将端口设置为" true"所以led是轻盈的 没有不同。当读取引脚时,LED指示灯熄灭且引脚为真。

相同但反向是引脚11,12 - 引脚关闭且引脚错误。

使用侦听器对特定引脚的值进行更改... 虽然我真的想按需读取引脚值!

2 个答案:

答案 0 :(得分:2)

写入时,将GPIO引脚设置为输出(这很好)。但是,当您尝试“读取”时,将GPIO引脚设置为更改引脚模式的输入。所以尝试删除:

gpio.setup(7, gpio.DIR_IN, readInput);

来自Raspberry Pi论坛:

  

17条可用的GPIO线中有5条是   默认情况下拉高(其余部分拉低)。数字是   GPIO0 / 2,GPIO1 / 3,GPIO4,GPIO7和GPIO8。

答案 1 :(得分:1)

将 gpio 引脚设置为 DIR_OUT 以进行写入。写入后,在不设置gpio的情况下再次读取引脚。这是我使用 gpio promise api 的代码:

    var gpio = require('rpi-gpio').promise
            
    const pin = 7
    gpio.setup(pin, gpio.DIR_OUT)
        .then(() => {
            gpio.write(pin, true)
                .then(() => {
                    gpio.read(pin)
                        .then(status => {
                            console.log('The status of the pin ', pin, ' is ', status)
                        })
                        .catch(err => {console.log(err.toString())})
                }).catch(err => {console.log(err.toString())})
         }).catch(err => {console.log(err.toString())})