我们使用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 - 引脚关闭且引脚错误。
使用侦听器对特定引脚的值进行更改... 虽然我真的想按需读取引脚值!
答案 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())})