Johnny-Five 实战:在 Intel Edison 上驱动 Grove RGB LCD 实现旋钮调色
IoT机器人嵌入式【免费下载链接】johnny-fiveJavaScript Robotics and IoT programming framework, developed at Bocoup.项目地址https://gitcode.com/gh_mirrors/jo/johnny-five点击查看免费下载导读本文以 Johnny-Five 官方示例 docs/grove-lcd-rgb-edison.md 为主线完整讲解如何在 Intel Edison Arduino Breakout 开发板上通过 Grove Base Shield 连接 RGB 背光 LCDJHD1313M1与旋转电位器Rotary Angle Sensor实现转动旋钮实时改变 LCD 背光颜色的完整方案。读完本文你将掌握 Johnny-Five 的Sensor与LCD组件在 Edison 平台上的接线方法、I2C 控制器选型、scale()数值映射以及线性插值驱动bgColor()的实战写法。硬件与平台概览该示例基于 Johnny-Five 的通用抽象层设计Grove RGB LCD 组件可以在任何 Arduino 引脚兼容的硬件平台上工作本文使用的平台是 Intel Edison 的 Arduino Breakout 扩展板。程序通过edison-io这一 IO 插件将 Johnny-Five 与 Edison 的硬件能力桥接起来。需要准备的四件硬件硬件说明Intel Edison Arduino BreakoutEdison 的 Arduino 兼容扩展板提供标准引脚布局Grove Base Shield v2插接在 Breakout 上提供 Grove 标准 4-pin 接口含 I2C 与模拟口Grove - LCD RGB w/ Backlight即 JHD1313M1 控制器驱动的 RGB 背光字符 LCD16×2Grove - Rotary Angle Sensor旋转角度传感器电位器输出 0~5V 模拟电压接线要点来自 eg/grove-lcd-rgb-edison.js 的注释Rotary Angle Sensor 模块→ 插入 Grove Shield 的A0模拟口RGB LCD 模块→ 插入 Grove Shield 的任意I2C 接口LCD 通过 I2C 总线通信无需占用数字引脚。运行示例程序在项目根目录已npm install安装依赖的前提下执行node eg/grove-lcd-rgb-edison.js对应的官方文档命令为node eg/grove-lcd-rgb-edison.js见 docs/grove-lcd-rgb-edison.md两者完全等价。示例源码位于 eg/grove-lcd-rgb-edison.js程序启动后会持续监听 A0 口的旋钮变化并实时刷新 LCD 背光颜色。注意示例依赖外部模块edison-io需要预先通过npm install edison-io安装同时你的 Edison 需要刷入支持 Firmata/I2C 的标准固件。程序结构逐段解析1. 初始化 Board 与 Edison IO 插件var five require(johnny-five); var Edison require(edison-io); var board new five.Board({ io: new Edison() });five.Board接收一个 IO 插件实例new Edison()Johnny-Five 通过该插件向 Edison 发送标准指令。这一模式同样出现在 eg/grove-lcd-rgb-temperature-display-edison.js 等 Edison 平台示例中是 Johnny-Five 平台无关架构的典型体现——Board组件在 lib/board.js 中统一封装了io适配层上层组件Sensor、LCD只面向io接口编程。2. 创建旋转电位器传感器var rotary new five.Sensor(A0);Sensor构造函数在 lib/sensor.js 中实现默认按 10-bit ADC 分辨率0x3FF即 0~1023读取模拟输入并将引脚设置为ANALOG输入模式this.io.pinMode(this.pin, this.io.MODES.ANALOG)。也就是说旋钮在 A0 口上原始读数为 0~1023 之间的整数。3. 创建 JHD1313M1 RGB LCDvar lcd new five.LCD({ controller: JHD1313M1 });LCD组件lib/lcd.js通过controller选项选择驱动协议。JHD1313M1控制器在源码中注册为两个 I2C 地址// LCD: 0x3E // RGB: 0x62 this.address { lcd: options.address || 0x3E, rgb: 0x62 };也就是说一个模块内部实际上是两个 I2C 从设备0x3E负责字符显示HD44780 兼容指令集0x62负责 RGB 背光控制。初始化时源码会执行标准 HD44780 初始化序列sleep(50)等待上电稳定、连续发送功能设置命令、开启显示、清屏、归位随后开启背光并将默认背景色设为黑色this.bgOn(); this.bgColor(options.color || black);默认行列为lines 2、cols 1616×2 字符屏可通过rows、cols等选项覆盖。4. 旋钮值映射与背光调色核心逻辑rotary.scale(0, 255).on(change, function() { var r linear(0xFF, 0x4B, this.value, 0xFF); var g linear(0x00, 0x00, this.value, 0xFF); var b linear(0x00, 0x82, this.value, 0xFF); lcd.bgColor(r, g, b); });这段代码是本示例的精华分三步理解第一步scale(0, 255)线性映射。Sensor.prototype.scale(low, high)在 lib/sensor.js 中实现将 ADC 原始读数0~1023等比例映射到 0~2558-bit区间并存入状态同时把this.isScaled置为true。this.value返回的即映射后的值。第二步change事件监听。源码中Sensor在读回调里对模拟读数做中位数滤波state.median median(samples)以抑制噪声然后发射data事件只有当滤波后的值与上一次相差超过threshold默认1时才发射change事件lib/sensor.js。因此这里用change监听旋钮的实质性转动避免背光被抖动频繁刷新。第三步线性插值计算 RGB。辅助函数linear实现标准线性插值function linear(start, end, step, steps) { return (end - start) * step / steps start; }旋钮在 0~255 范围内转动时RGB 三分量分别从「红色0xFF,0x00,0x00」向「紫色0x4B,0x00,0x82」平滑过渡中间经过黄、绿、青、蓝等中间色实现整段可见光谱的渐变。5.bgColor()的底层实现LCD.prototype.bgColor(red, green, blue)在 lib/lcd.js 中实现接收三种调用形式三个数值、色名如black或 16 进制色值统一经RGB.ToRGB()归一为{ red, green, blue }分量然后通过 I2C 向背光控制器0x62依次写入寄存器this.io.i2cWrite(address, [0x00, 0]); // 模式寄存器选择 RGB 模式 this.io.i2cWrite(address, [0x01, 0]); // 使能寄存器 this.io.i2cWrite(address, [0x04, rgb.red]); // 红色分量 this.io.i2cWrite(address, [0x03, rgb.green]); // 绿色分量 this.io.i2cWrite(address, [0x02, rgb.blue]); // 蓝色分量每次调用返回this支持链式调用例如示例 eg/grove-lcd-rgb-temperature-display-edison.js 中的lcd.bgColor(r, g, b).cursor(0, 0).print(f)。同时 LCD 还提供bgOn()与bgOff()控制背光开关分别向0x62写入0xAA与0x00。延伸字符显示与背光联动的另一种玩法同为 Edison 平台的 eg/grove-lcd-rgb-temperature-display-edison.js 展示了同一块 LCD 的进阶用法使用Thermometercontroller: GROVE接 A0读取温度根据温度区间让背光在「冷→蓝→紫」与「热→红→黄」之间变化同时调用lcd.cursor(0, 0).print(f)在首行打印华氏温度值。其颜色映射同样是linear()线性插值。如果你的项目需要在显示文本的同时用背光做状态指示可直接参考该示例。排错与注意事项I2C 接线必须接 I2C 口JHD1313M1 走 I2C 总线内部地址0x3E0x62接到 Grove Shield 的数字/模拟口无法工作模拟口选择旋钮接 A0Sensor(A0)中的引脚名要与实际接口一致依赖完整性确保johnny-five与edison-io均已安装且 Edison 固件支持标准 I2C 通信背光默认状态初始化时若未传color选项背光默认为黑色bgColor(black)属正常现象首次转动旋钮后颜色即开始变化事件频率change事件带阈值去抖若觉得响应过灵敏或过迟钝可调整Sensor的threshold或freq选项。总结本文围绕 docs/grove-lcd-rgb-edison.md 的官方示例打通了「Intel Edison Grove Shield RGB LCD 旋钮」的完整链路从edison-io的 Board 初始化到Sensor的scale()映射与change事件、LCD的JHD1313M1双 I2C 地址结构再到bgColor()的寄存器级写入。掌握了这套模式你就可以在任意 Arduino 引脚兼容平台上自由组合 Grove 传感器与 RGB LCD快速构建带可视化反馈的物联网交互界面。赞分享IoT机器人嵌入式【免费下载链接】johnny-fiveJavaScript Robotics and IoT programming framework, developed at Bocoup.项目地址https://gitcode.com/gh_mirrors/jo/johnny-five点击查看免费下载相关推荐基于 Johnny-Five 在 Intel Edison 上驱动 Grove RGB LCD全量 CSS 颜色名背景色预览实战基于 Johnny Five 在 Intel Edison 上驱动 Grove RGB LCD全量 CSS 颜色名背景色预览实战 本篇技术指南讲解如何用 JoIoT机器人嵌入式Johnny-Five 在 Intel Edison 上驱动 Grove 气压计BMP180实战指南Johnny Five 在 Intel Edison 上驱动 Grove 气压计BMP180实战指南 本文基于 Johnny Five 仓库中的 groveIoT机器人嵌入式Johnny-Five × Intel Edison 旋钮电位器实战用 Grove Rotary Angle Sensor 控制 LED 亮度Johnny Five × Intel Edison 旋钮电位器实战用 Grove Rotary Angle Sensor 控制 LED 亮度 本篇指南基于IoT机器人嵌入式创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

网站制作全流程:从基础概念到实战优化

网站制作全流程:从基础概念到实战优化

1. 网站制作基础概念解析网站制作是指通过技术手段将文字、图片、多媒体等内容组织成可在互联网上访问的页面集合的过程。它不同于简单的网页设计,而是包含从策划到上线的完整生命周期。一个典型的网站由域名、服务器、前端代码、后端程序、数据库等核心组件构成。现…

2026/9/23 7:56:28 阅读更多 →
影视后期制作工程师怎么考证?从报名学习到考试拿证,报考全攻略

影视后期制作工程师怎么考证?从报名学习到考试拿证,报考全攻略

影视后期制作工程师是计算机软件领域与影视传媒交叉的重要技术岗位。随着短视频、网络电影、广告、纪录片等内容产业持续发展,影视后期制作人才需求保持稳定增长。如果你正在考虑考取影视后期制作工程师证书,本文将从报名学习到考试拿证,做一…

2026/9/23 7:55:27 阅读更多 →
零基础90天Python工程化学习路线图:从文件操作到可部署项目

零基础90天Python工程化学习路线图:从文件操作到可部署项目

1. 这不是又一本“从入门到放弃”的Python书——它是一份可执行的工程化学习路线图你点开这个标题,大概率正站在两个路口之间:一边是铺天盖ed的“零基础Python教程”,点进去全是print("Hello World")、变量类型、if-else三板斧&…

2026/9/23 7:55:27 阅读更多 →

最新新闻

PaddleNLP tie_weights 权重绑定能力设计与实现全解析(RFC No.103)

PaddleNLP tie_weights 权重绑定能力设计与实现全解析(RFC No.103)

PaddleNLP tie_weights 权重绑定能力设计与实现全解析(RFC No.103) 【免费下载链接】PaddleNLP Easy-to-use and powerful LLM and SLM library with awesome model zoo. 项目地址: https://gitcode.com/gh_mirrors/pa/PaddleNLP 导读 权重绑定&…

2026/9/24 19:12:45 阅读更多 →
bugku与qsnctf实战对比:从新手刷题到CTF竞赛的完整指南

bugku与qsnctf实战对比:从新手刷题到CTF竞赛的完整指南

如果你刚开始接触CTF,或者已经在安全方向上摸索了一段时间但一直没找到系统的练习入口,那bugku和qsnctf这两个平台的名字,十有八九已经反复出现在各路前辈的推荐清单里了。我自己也是从这两个平台走过来的,可以说,它们…

2026/9/24 19:12:45 阅读更多 →
TrafficMonitor天气插件配置全指南:从入门到免踩坑实践

TrafficMonitor天气插件配置全指南:从入门到免踩坑实践

TrafficMonitor我用了快三年,任务栏上常年挂着CPU、内存、网速三块数据,好处是心里有数、不用点开任何窗口;坏处是,时间长了你会觉得右上角这一小条信息太“工具化”,缺一点跟生活相关的内容。后来我把天气预报塞进任务…

2026/9/24 19:12:45 阅读更多 →
CentOS 7.6 安装 VMware Workstation 内核模块编译失败排查与解决

CentOS 7.6 安装 VMware Workstation 内核模块编译失败排查与解决

在 CentOS 7.6 上装 VMware Workstation,流程本身其实不复杂:官网下载 bundle 包,加执行权限,root 跑一遍,点几个向导页就完事。真正让人头疼的是装完以后第一次双击图标,屏幕中央弹出那个"VMware Ker…

2026/9/24 19:12:45 阅读更多 →
Cookie和Session的区别:从登录掉线到安全漏洞,一文搞懂

Cookie和Session的区别:从登录掉线到安全漏洞,一文搞懂

从登录掉线到安全漏洞,Cookie和Session的区别你真的搞懂了吗?但凡做过Web开发,迟早会在登录模块上栽一次跟头——要么是用户反馈“明明登录了,刷新一下就掉线”,要么是后端同事盯着一串看不懂的加密字符串问你“这玩意…

2026/9/24 19:12:45 阅读更多 →
EC纠删码与数据压缩实战:降低存储成本的全栈方案

EC纠删码与数据压缩实战:降低存储成本的全栈方案

1. 硬件涨价潮下的存储成本困局先看一个我这两年在给客户做存储方案时经常遇到的场景:本来预算单上写得好好的,一批 16TB 的 NL-SAS 盘,按去年的行情大概能拿下,结果等到真正下单的时候,采购那边跑过来拍桌子说价格涨了…

2026/9/24 19:11:44 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →