我最近尝试将 Raspberry pi 4 的 GPIO 与 Node js 一起使用。 我设法让该程序在我的树莓派上运行,但是当我想将它放在另一个树莓派上时,我就无法再让它运行了。
为此,我使用 onoff 库。 程序如下:
var GPIO = require('onoff').Gpio;
var lightPin = new GPIO(23, 'out');
lightPin.writeSync(1)
但是当我运行它时,我收到以下错误:
node:internal/fs/utils:353
throw err;
^
Error: EINVAL: invalid argument, write
at Object.writeSync (node:fs:939:3)
at Object.writeFileSync (node:fs:2355:26)
at exportGpio (/home/pi4b/API/node_modules/onoff/onoff.js:18:8)
at new Gpio (/home/pi4b/API/node_modules/onoff/onoff.js:172:36)
at Object.<anonymous> (/home/pi4b/API/helper.js:3:16)
at Module._compile (node:internal/modules/cjs/loader:1369:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1427:10)
at Module.load (node:internal/modules/cjs/loader:1201:32)
at Module._load (node:internal/modules/cjs/loader:1017:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:122:12) {
errno: -22,
syscall: 'write',
code: 'EINVAL'
}
Node.js v21.0.0
node.js 的版本 ->
21.0.0
(两个 pi 相同)
npm 的版本 ->
10.5.0
(两个 pi 相同)
onoff 的版本 ->
[email protected]
(两个 pi 相同)
Debian 版本 ->
12.5
(针对旧 pi 的 11.9)
有关信息,
node_modules
文件夹已完全删除并使用 npm i
重新安装。
我还尝试了 python 中的库RPi.GPIO
,它似乎工作正常。
谢谢您的帮助。
Raspberry OS 内核似乎通过另一种编号方案来寻址 GPIO 引脚。
~ $ cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 512-569, parent: platform/fe200000.gpio, pinctrl-bcm2711:
...
gpio-532 (GPIO20 |sysfs ) in lo
gpio-533 (GPIO21 |sysfs ) in lo
gpio-534 (GPIO22 |sysfs ) in lo
gpio-535 (GPIO23 )
gpio-536 (GPIO24 )
gpio-537 (GPIO25 )
gpio-538 (GPIO26 |sysfs ) in lo
...
如果要对GPIO23引脚进行寻址,则必须使用gpio-[编号]之后的数字
您的情况:
var GPIO = require('onoff').Gpio;
var lightPin = new GPIO(535, 'out');
lightPin.writeSync(1)