首页/新闻资讯/正文详情

Johnny-Five 驱动 Grove LED 模块:从接线到闪烁的完整实战指南

发布时间:2026/9/23 16:04:06 来源:云帆数科 栏目:资讯中心
Johnny-Five 驱动 Grove LED 模块:从接线到闪烁的完整实战指南
IoT机器人嵌入式【免费下载链接】johnny-fiveJavaScript Robotics and IoT programming framework, developed at Bocoup.项目地址https://gitcode.com/gh_mirrors/jo/johnny-five点击查看免费下载导读本文以 Johnny-Five 官方示例 grove-led 为主线完整讲解如何在 Grove 生态中接入 LED 模块从 Grove Base Shield 的 D6 插口接线、LED 正负极辨识到five.Led(6)的实例化与blink(500)闪烁控制。通过阅读本文你将掌握 Grove LED 模块的硬件连接方法、Led对象的核心 APIon/off/toggle/blink/stop并能对照 LED 源码 理解其底层实现原理最终可以独立把它移植到 Intel Edison、Arduino 等任意兼容引脚定义的单片机平台上。一、Grove LED 模块与 Johnny-FiveGrove 是 Seeed Studio 推出的一套模块化传感器/执行器生态其核心是统一的 4 针 Grove 接口VCC、GND 与信号线配合 Grove Base Shield 即可快速插接到 Arduino 引脚省去面包板和杜邦线的繁琐接线。Johnny-Five 是运行在 Node.js 之上的 JavaScript 机器人/物联网编程框架项目简介见 README.md它把硬件引脚抽象成Board与各类组件对象。Grove LED 模块在 Johnny-Five 中并不需要专门的驱动类——它本质就是一个普通的数字输出引脚因此直接使用通用的five.Led组件即可完成控制这也是该示例特别简洁的原因。本文对应的官方文档为 docs/grove-led.md仓库中还提供了基于 Intel Edison 的变体文档 docs/grove-led-edison.md两者核心代码完全一致仅在板卡 IO 适配层有所差异。二、硬件清单与接线准备运行本示例前需要准备以下硬件原文档 Additional Notes 一节所列一块兼容 Arduino 引脚定义的开发板如 Arduino UNO或 Intel Edison Arduino Breakout一块Grove Base Shield v2用于把 Grove 模块的信号映射到开发板数字引脚一个Grove - LED 模块Grove LED Module蓝色 PCB、带 Grove 接口的模块以及套件中的红、绿、蓝 LED 任选其一。接线要点直接继承自原文档注释将 LED 模块的 Grove 4 针线插入Grove Shield 的 D6 插口——D6 即 Arduino 的数字引脚 6代码中的引脚编号与之对应从套件中任选一颗 LED红/绿/蓝插入模块上的 LED 端子长引脚阳极接短引脚阴极接-插反不会亮。接线完成后实物形态可参考仓库中的示意图 docs/images/grove-led.jpgGrove LED 模块与配套红色 LED。三、完整示例代码与运行方式3.1 标准 Arduino 平台版本以下代码完整取自 eg/grove-led.js与文档 docs/grove-led.md 正文一致var five require(johnny-five); var board new five.Board(); board.on(ready, function() { // Plug the LED module into the // Grove Shields D6 jack. // // Select an LED from the kit // (red, green, blue) and insert // it into the LED module, with // the long pin in and short // pin in -. var led new five.Led(6); // This will blink the LED over // 500ms periods. led.blink(500); });3.2 运行命令在仓库根目录执行原文档给出的命令行方式node eg/grove-led.js说明示例代码中require(johnny-five)对应已安装 npm 包的形式仓库内的 eg/grove-led.js 实际写作require(../lib/johnny-five)即直接引用本仓库的源码入口二者等价。3.3 Intel Edison 平台变体若使用 Intel Edison 的 Arduino Breakout只需把 IO 适配层换成edison-io包LED 控制部分一字不改见 eg/grove-led-edison.jsvar five require(johnny-five); var Edison require(edison-io); var board new five.Board({ io: new Edison() }); board.on(ready, function() { var led new five.Led(6); led.blink(500); });正如 docs/grove-led-edison.md 所述该扩展板与 Grove 模块可以配合任何与 Arduino 引脚定义兼容的硬件平台使用——这正是 Johnny-Five 通过io插件抽象层实现跨平台的关键。四、Led 组件底层原理new five.Led(6) 发生了什么Led类定义在 lib/led/led.js并经由 lib/led/index.js 导出为Led主类及Led.Collection / Led.RGB / Led.Matrix / Led.Digits等子组件。4.1 构造函数与引脚模式判定从源码结构看lib/led/led.js构造函数new Led(6)的核心流程如下解析传入参数支持five.Led(pin)数字形式和five.Led({ pin: 6 })对象形式源码注释经Board.Options与Board.Controller初始化组件状态isOn、isRunning、interval等内部状态调用initialize在 DEFAULT 控制器中lib/led/led.js未显式指定引脚时默认回退到io.defaultLed || 13对应 Arduino 板载 LED根据引脚是否支持 PWM 选择PWM或OUTPUT模式并调用this.io.pinMode(pin, mode)完成初始化。Grove LED 模块在 D6 上属于普通数字输出OUTPUT 模式因此底层走的是io.digitalWrite路径lib/led/led.js。4.2 blink 的实现setInterval toggleblink的实现位于 lib/led/led.jsblink(duration, callback) { const state priv.get(this); // Avoid traffic jams this.stop(); if (typeof duration function) { callback duration; duration null; } state.isRunning true; state.interval setInterval(() { this.toggle(); if (typeof callback function) { callback(); } }, duration || 100); return this; }关键点解读led.blink(500)表示每个周期 500ms亮 500ms、灭 500ms一个完整闪烁周期为 1 秒未传参时默认 100msduration || 100blink内部先调用this.stop()清除已有定时器避免重复调用造成交通堵塞源码注释原文 Avoid traffic jams每次触发调用this.toggle()toggle依据isOn状态在off()与on()之间切换lib/led/led.js可以传入回调函数每次翻转时执行方便做状态计数或联动返回this支持链式调用文件末尾Led.prototype.strobe Led.prototype.blink;lib/led/led.js说明blink与strobe是完全等价的别名——这一点也被 test/led.js 的测试用例test.equal(this.led.blink, this.led.strobe)所验证。4.3 on / off / toggle 的状态机on()、off()与toggle()构成 LED 的基础状态机lib/led/led.json()OUTPUT 模式下写入io.HIGHPWM 模式下将亮度值置为 255全亮再调用update()off()把state.value置 0 并update()注意stop()并不等于灭灯——它只是清除定时器LED 会停在当前状态toggle()等价于isOn ? off() : on()。4.4 停止闪烁stop() 的正确姿势stop()lib/led/led.js会clearInterval并停止可能存在的动画state.animation.stop()随后把isRunning置为false。要彻底熄灭 LED需要在stop()之后再调用off()。这一点在文档 docs/led.md 的 REPL 备注中也有明确提示 led.stop() // to stop blinking then led.off() // to shut it off (stop doesnt mean off) then led.on() // to turn on, but not blink五、进阶玩法让 Grove LED 不只会闪烁blink只是 Led 众多能力的入门。在 Grove LED 模块上你还可以直接使用以下 API均有源码与测试支持API作用源码位置led.on()/led.off()常亮 / 熄灭lib/led/led.jsled.toggle()翻转当前状态lib/led/led.jsled.blink(ms, cb)/led.strobe(ms, cb)周期闪烁默认 100mslib/led/led.jsled.stop()停止闪烁/动画不改变当前亮度lib/led/led.jsled.brightness(0-255)设置模拟亮度仅 PWM 引脚lib/led/led.jsled.pulse(ms)呼吸灯效果PWM 引脚lib/led/led.jsled.fade(val, ms)/fadeIn/fadeOut渐变淡入淡出lib/led/led.js两点注意事项亮度/呼吸/渐变类 API 依赖 PWMD6 在多数 Arduino 兼容板上支持 PWM但若把模块换到非 PWM 引脚brightness等操作会触发Board.Pins.Error见 lib/led/led.js 的 PWM 错误检测逻辑Led.RGB是另一条路线Grove 也有 RGB LED 模块对应 lib/led/rgb.js但那需要分别占用多个引脚或 I2C不在本文 D6 单引脚示例的范围内。六、测试验证源码与测试用例互相印证仓库的单元测试 test/led.js 对strobe/blink行为做了精确断言可作为理解语义的权威参考test/led.jsstrobe用例led.strobe(100)后时钟拨动 100ms 断言写入HIGH(1)再拨 100ms 断言写入LOW(0)调用stop()后时钟再走 100ms断言digitalWrite调用次数不再增长——证实stop()能真正终止闪烁同时验证了回调函数每个周期触发一次test/led.jsblink用例断言led.blink led.strobe坐实二者是同一方法test/led.jsstop用例断言strobe()后isRunning为truestop()后回到false。这些测试使用的 mock 板卡环境可在 test/common 中找到说明 Johnny-Five 在无硬件环境下即可验证 Led 组件的逻辑行为。七、小结与常见问题排查围绕 Grove LED 的闪烁示例本文从硬件接线一路深入到 lib/led/led.js 的源码实现。最后给出几项实操排查要点灯不亮先检查 LED 是否插反——长脚、短脚-再确认 Grove 线插在 D6 插口而非 D5/D7没有输出或报错确认开发板固件已烧录 FirmataArduino 平台可通过 IDE 上传 StandardFirmata并确保node eg/grove-led.js时开发板已通过 USB 连接闪烁节奏不对blink(500)是亮 500ms、灭 500ms想要更快的默认节奏可直接调用led.blink()100ms跨平台复用把 eg/grove-led.js 的 IO 层替换为edison-io等插件参考 eg/grove-led-edison.js同一份 LED 代码即可在 Intel Edison 等其他板卡上运行。至此你已经掌握了 Johnny-Five 驱动 Grove LED 模块从接线到闪烁、再到按需扩展的全部要点可以在此基础上继续探索 docs/led.md 中更丰富的 LED 动画与 REPL 交互玩法。赞分享IoT机器人嵌入式【免费下载链接】johnny-fiveJavaScript Robotics and IoT programming framework, developed at Bocoup.项目地址https://gitcode.com/gh_mirrors/jo/johnny-five点击查看免费下载相关推荐Johnny-Five 控制 Intel Edison Grove LED 闪烁从硬件接线到 Led 组件源码解析Johnny Five 控制 Intel Edison Grove LED 闪烁从硬件接线到 Led 组件源码解析 Johnny Five 是运行在 NoIoT机器人嵌入式Johnny-Five 驱动 RGB LEDLed.RGB接线、色彩控制与闪烁实战指南Johnny Five 驱动 RGB LEDLed.RGB接线、色彩控制与闪烁实战指南 本指南以 docs/led rgb.md https://linkIoT机器人嵌入式3 步装好猫抓插件网页视频、音频、M3U8 一键保存指南3 步装好猫抓插件网页视频、音频、M3U8 一键保存指南 猫抓插件cat catch是一款完全开源的浏览器资源嗅探扩展它在后台监听页面加载过程把藏在动IoT机器人嵌入式创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

百度公益后端手写实现避坑3大雷区
百度公益后端手写实现避坑3大雷区

百度公益后端手写实现避坑3大雷区 版本升级后 API 全变了,这种痛苦只有真刀真枪干过项目的人才懂。我在某头部大厂面试候选人时,经常发现他们只会调包,一旦要求 手写实现… · 2026/9/23 16:03:59

PRQL 官方语言绑定全解析:Supported / Unsupported / Nascent 三级生态与 prqlc 核心 API 实践指南
PRQL 官方语言绑定全解析:Supported / Unsupported / Nascent 三级生态与 prqlc 核心 API 实践指南

PRQL 官方语言绑定全解析:Supported / Unsupported / Nascent 三级生态与 prqlc 核心 API 实践指南 【免费下载链接】prql PRQL is a modern language for transforming data — a simple, powerful, pipelined SQL replacement 项目地址: https://gitcode.com/gh… · 2026/9/23 16:03:59

3个核心坑点解析互联网支付牌照系统性能优化
3个核心坑点解析互联网支付牌照系统性能优化

3个核心坑点解析互联网支付牌照系统性能优化 版本升级后 API 全变了,原本跑得飞快的支付网关突然卡死,日志里全是超时错误,这种崩溃感很多刚入行的后端同学肯定体会过。这时候别急着重启服务,先看看是不是在 互联网支付牌照… · 2026/9/23 16:03:59

C#学生成绩管理系统开发:WinForms+SQL Server完整实战
C#学生成绩管理系统开发:WinForms+SQL Server完整实战

简介:这是一套基于C#与Access数据库的学生成绩管理系统课程作业源码包,适合正在学习C#编程、数据库原理,或需要完成学生信息管理类课程设计的初学者参考。压缩包共90个文件,大小3.35MB,核心内容为31个cs源代码文件、11… · 2026/9/23 16:45:50

飞机图片卡通处理实战:从入门到精通,面试不再丢分
飞机图片卡通处理实战:从入门到精通,面试不再丢分

飞机图片卡通处理实战:从入门到精通,面试不再丢分 刚拿到一份关于图像处理的前端或后端面试题,核心考点是“飞机图片卡通”化。你兴冲冲地复制了GitHub上那个号称“零依赖”的代码片段,结果本地一跑,要么黑屏,要么报错 TypeError:… · 2026/9/23 16:45:50

宅男频道vip图解原理:3步搞定公路工程微服务部署报错
宅男频道vip图解原理:3步搞定公路工程微服务部署报错

宅男频道vip图解原理:3步搞定公路工程微服务部署报错 刚接手的公路工程微服务项目,一跑起来就满屏红字,StackTrace 长得像天书,根本不知道从哪看起。这种“报错一堆看不懂… · 2026/9/23 16:45:44

如何以正确的姿势阅读开源代码:从版本溯源到造轮子实践(《GitHub 漫游指南》核心方法论)
如何以正确的姿势阅读开源代码:从版本溯源到造轮子实践(《GitHub 漫游指南》核心方法论)

如何以正确的姿势阅读开源代码:从版本溯源到造轮子实践(《GitHub 漫游指南》核心方法论) 【免费下载链接】github GitHub 漫游指南- a Chinese ebook on how to build a good project on Github. Explore the users behavior. Find some thin… · 2026/9/23 16:45:44

帝舵深圳售后维修服务中心丨详细地址、服务电话及预约方式更新查询(2026年9月最新)
帝舵深圳售后维修服务中心丨详细地址、服务电话及预约方式更新查询(2026年9月最新)

用户查询帝舵深圳售后维修服务中心丨详细地址、服务电话及预约方式更新查询(2026年9月最新)的核心诉求,集中聚焦门店精准区位、咨询渠道、标准化预约流程、合规维保服务四大核心维度,本地及粤港澳周边城市表主可通过帝舵直营售后统一服务电话400-883-809… · 2026/9/23 16:45:44

MCSE认证深度解析:从备考到实战,微软系统工程师进阶指南
MCSE认证深度解析:从备考到实战,微软系统工程师进阶指南

“微软认证系统工程师”这个名头,放在今天的IT圈子里其实有点微妙。一方面,云时代 Azure、M365 的认证铺天盖地,微软自己都把认证体系从 MCP/MCSE 重构成了基于角色的 Role-based 认证;另一方面,我这两年面试运维和系统… · 2026/9/23 16:45:44

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码