You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在树莓派上使用johnny-five遇阻,求助解决raspi-io兼容问题

树莓派Johnny-Five灯光切换方案(解决raspi-io兼容问题)

一、解决raspi-io依赖缺失与版本兼容问题

1. 切换兼容Node.js版本

raspi-io对v20+的Node.js兼容性不佳,推荐用nvm切换到v18.x版本:

先安装nvm(Node版本管理工具),然后执行:

nvm install 18
nvm use 18

2. 重新安装依赖

在项目根目录执行完整安装命令,避免全局安装导致的模块找不到问题:

npm install johnny-five raspi-io --save

若仍有依赖报错,清理缓存后重装:

npm cache clean --force
rm -rf node_modules package-lock.json
npm install

3. 替代方案:用pigpio适配高版本Node.js

如果raspi-io仍无法正常使用,改用pigpio(兼容v20+ Node.js):

npm install johnny-five pigpio --save

二、灯光切换代码实现

方案1:基于raspi-io(版本兼容时)

假设LED接GPIO17(对应物理引脚11):

const five = require("johnny-five");
const Raspi = require("raspi-io");

const board = new five.Board({
  io: new Raspi()
});

board.on("ready", () => {
  const led = new five.Led("P1-11");
  let isOn = false;

  // 每秒切换一次LED状态
  setInterval(() => {
    isOn = !isOn;
    isOn ? led.on() : led.off();
    console.log(`LED: ${isOn ? '开启' : '关闭'}`);
  }, 1000);
});

方案2:基于pigpio(高版本Node.js)

const five = require("johnny-five");
const { Gpio } = require("pigpio");

const board = new five.Board({
  io: {
    digitalWrite(pin, value) {
      const gpio = new Gpio(pin);
      gpio.mode(Gpio.OUTPUT);
      gpio.digitalWrite(value ? 1 : 0);
    }
  }
});

board.on("ready", () => {
  const led = new five.Led(17);
  let isOn = false;

  setInterval(() => {
    isOn = !isOn;
    isOn ? led.on() : led.off();
    console.log(`LED: ${isOn ? '开启' : '关闭'}`);
  }, 1000);
});

三、必要配置

  • 启用树莓派GPIO:执行raspi-config,选择Interfacing Options -> GPIO -> Enable。
  • 运行脚本需sudo权限:sudo node your-script.js

内容的提问来源于stack exchange,提问作者An Trieu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 02:55:29