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

Johnny-Five 触控传感实战:使用 Button 类驱动 Grove Touch 模块实现触摸点灯

发布时间:2026/9/23 6:42:39 来源:云帆数科 栏目:资讯中心
Johnny-Five 触控传感实战:使用 Button 类驱动 Grove Touch 模块实现触摸点灯
IoT机器人嵌入式【免费下载链接】johnny-fiveJavaScript Robotics and IoT programming framework, developed at Bocoup.项目地址https://gitcode.com/gh_mirrors/jo/johnny-five点击查看免费下载导读本文围绕 johnny-five 官方示例docs/grove-touch.md展开讲解如何通过 Grove Base Shield 连接 Grove Touch 触摸传感器与 Grove LED 模块并利用 johnny-five 的Button类实现触摸按下点亮 LED、松开熄灭的完整交互逻辑。读完本文你将掌握 Grove 系列数字传感器的接线方式、Button的事件模型press/release/hold以及其底层消抖与按键状态判定原理可直接在自己的 Arduino 板卡上复现该示例。一、示例总览一条命令跑通触摸点灯官方在 docs/grove-touch.md 中给出的核心示例可通过命令行直接运行node eg/grove-touch.js示例源码位于 eg/grove-touch.js完整的程序如下var five require(johnny-five); var board new five.Board(); board.on(ready, function() { // Plug the Touch module into the // Grove Shields D4 jack. Use // the Button class to control. var touch new five.Button(4); // Plug the LED module into the // Grove Shields D6 jack. See // grove-led for more information. var led new five.Led(6); // The following will turn the Led // on and off as the touch is // pressed and released. touch.on(press, function() { led.on(); }); touch.on(release, function() { led.off(); }); });这段代码只有三个关键步骤创建five.Board()并等待ready事件确保板卡如 Arduino UNO固件Firmata已就绪用new five.Button(4)把插在 Grove ShieldD4 数字接口上的 Touch 模块抽象为按键用new five.Led(6)把插在D6 数字接口上的 LED 模块抽象为发光二极管并在触摸的press/release事件中控制其开关。二、硬件接线与物料清单按照示例注释你需要以下硬件Grove Base Shield v2叠在 Arduino UNO 上的扩展板提供标准 Grove 4 针接口VCC、GND、SIG、NC示例中 Touch 模块接D4LED 模块接D6Grove - Touch Module电容式触摸传感器输出数字电平——手指触摸时输出高电平松开后恢复低电平其本质是一个自锁式数字开关因此可以被Button类直接驱动Grove - LED Module即插即用的 LED 灯模块内置限流电阻直接由数字引脚输出驱动即可点亮。接线要点两块模块都通过 Grove 标准线缆插到 Base Shield 上即可无需面包板和外部电阻。LED 模块的插法可参考 eg/grove-led.js 与 docs/grove-led.md从套件中选择红/绿/蓝色 LED长脚插入位、短脚插入-位。三、为什么 Touch 传感器要用 Button 类Grove Touch 传感器对外表现为一路数字信号0 / 1这与普通按键完全一致。johnny-five 在 lib/button.js 中提供了Button类专门处理这类数字开关设备其事件模型与物理语义天然契合按下触摸时触发down别名press释放松开时触发up别名release长按持续按住超过holdtime后反复触发hold。事件别名映射在源码中写得很清楚lib/button.jsconst aliases { down: [down, press], up: [up, release] };因此示例中监听press/release等价于监听down/up。Button类支持的完整事件包括down、hold、up对应文档注释见 lib/button.js。底层原理状态检测与 7ms 消抖从 lib/button.js 的DEFAULT控制器实现可以看到Button底层的工作方式是将引脚设置为INPUT模式通过io.digitalRead持续读取数字电平并且只在电平值发生变化时才回调if (data ! state.last)避免连续重复触发每次电平变化后会通过Fn.debounce(..., 7)做7ms 消抖滤除触摸接触瞬间的抖动和噪声导致的误触发见 lib/button.js。这一点在 test/button.js 的测试用例中有直接体现测试通过设置极短的holdtime 10并模拟持续按压来验证hold事件的重复触发与释放后的停止行为说明press/release/hold都是经过测试保证的稳定事件。四、Button 类的完整配置项虽然new five.Button(4)这种极简写法即可运行但Button类支持丰富的配置项以满足不同电路。官方 docs/button-options.md 给出了对象式初始化示例button new five.Button({ board: board, pin: 8, holdtime: 1000, invert: false // Default: false. Set to true if button is Active-Low });结合 lib/button.js 的实现各配置项含义如下配置项默认值说明pin必填接按键/触摸传感器的数字引脚号也可传字符串形式如A0会被转换为模拟引脚索引见 lib/button.jsholdtime500长按判定阈值毫秒。按住超过该时间后开始持续触发hold事件见 lib/button.jspullup/isPullupfalse启用内部上拉电阻digitalWrite(pin, HIGH)适用于主动低电平的按键电路pulldown/isPulldownfalse启用内部下拉电阻digitalWrite(pin, LOW)invertfalse上拉模式下默认true反转电平逻辑有些电路按下输出 0、松开输出 1此时需设为true。显式传入时以你的设置为准见 lib/button.js对于本文的 Grove Touch 模块因为其输出为触摸 高电平使用默认配置即可这也是示例采用new five.Button(4)极简写法的原因。五、LED 的 on/off 控制与更多玩法示例中new five.Led(6)使用的是Led类最基础的on()/off()方法用于同步触摸状态。Led类位于 lib/led/led.js除了开关控制还提供blink、fade、pulse、strobe等常用方法。例如 eg/grove-led.js 演示了如何用led.blink(500)让 LED 以 500ms 周期闪烁。你可以在此基础上做很多扩展例如touch.on(press, function() { led.blink(200); // 触摸时快速闪烁 }); touch.on(release, function() { led.stop().off(); // 松开后停止并熄灭 });六、扩展阅读与相关资源完整可运行示例eg/grove-touch.js触摸传感器底层驱动实现lib/button.js按键配置项详解docs/button-options.md按键基础示例docs/button.md 与 eg/button.js按键事件行为的自动化测试test/button.jsGrove LED 模块示例eg/grove-led.js 与 docs/grove-led.md七、注意事项运行前请确认 Arduino 已烧录 StandardFirmata 固件并通过 USB 连接电脑Johnny-Five 默认会自动探测串口如需指定端口可参考 docs/board-with-port.md本示例基于 Grove 生态Base Shield 模块化传感器数字接口 D4 / D6 的分配是示例约定你也可以改到其他数字口只需同步修改new five.Button(pin)与new five.Led(pin)的参数若你的触摸模块输出逻辑相反松开为高、触摸为低可将invert选项设为true来适配。赞分享IoT机器人嵌入式【免费下载链接】johnny-fiveJavaScript Robotics and IoT programming framework, developed at Bocoup.项目地址https://gitcode.com/gh_mirrors/jo/johnny-five点击查看免费下载相关推荐Johnny-Five 使用 EVShield 驱动 LEGO NXT 触摸传感器Button EVS_NXT 控制器实战指南Johnny Five 使用 EVShield 驱动 LEGO NXT 触摸传感器Button EVS_NXT 控制器实战指南 本指南以 Johnny FivIoT机器人嵌入式Johnny-Five 使用 EVShield 读取 LEGO EV3 触控传感器Button - EVS_EV3实战指南Johnny Five 使用 EVShield 读取 LEGO EV3 触控传感器Button EVS_EV3实战指南 本文以 docs/button EVIoT机器人嵌入式Johnny-Five 碰撞式按钮Bumper Button指南用 Button Led 实现撞击触发控制Johnny Five 碰撞式按钮Bumper Button指南用 Button Led 实现撞击触发控制 本指南基于 Johnny Five 仓库中IoT机器人嵌入式创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

3个坑帮你搞懂dnf王者礼包最佳实践
3个坑帮你搞懂dnf王者礼包最佳实践

3个坑帮你搞懂dnf王者礼包最佳实践 官方文档像天书?别慌,我花了三年踩坑才总结出这套 最佳实践 。针对刚入行的嵌入式新人,这篇把DNF王者礼包的核心逻辑讲透,避开那些让人头大的配置陷阱。 概念速懂:礼包机制底层逻辑 很多人把… · 2026/9/23 6:42:39

AI时代创作者如何破局:人机协作与价值重构
AI时代创作者如何破局:人机协作与价值重构

1. 项目背景与核心议题这场由脉脉平台主办的AI创作者AMA活动,聚焦于当前AI技术爆发式发展背景下创作者群体的真实生存状态。作为连续举办到第二期的行业对话,活动直指一个尖锐问题:当AI工具已经能够完成文案生成、图像创作甚至视频制作时&… · 2026/9/23 6:42:39

从金浔资源上市看铜矿股价值:财务拆解与招股书阅读指南
从金浔资源上市看铜矿股价值:财务拆解与招股书阅读指南

昨天港股盘面有一则消息挺值得聊的:金浔资源成功挂牌,首日市值定格在54亿港元左右,同时披露的半年报数据是营收9.6亿元、利润1.35亿元。标题里几个数字放一起,看着不复杂,但真正做投研的人都明白,矿业公司上… · 2026/9/23 6:42:39

AI重构83万行代码库:四阶段实战路径与避坑指南
AI重构83万行代码库:四阶段实战路径与避坑指南

1. 83万行的代码库,问题根本不在“行数”上昨晚刷GitHub的时候,我盯着一个仓库发呆。这个项目在最近三个月里完成了将近两千次AI辅助生成的代码重构提交,仓库总规模83万行。放在两年前,这是不可想象的数字。一个传统团队&#xff… · 2026/9/23 7:33:13

3个马爸爸网高频面试题,搞定版本升级API变动
3个马爸爸网高频面试题,搞定版本升级API变动

3个马爸爸网高频面试题,搞定版本升级API变动 版本升级后 API 全变了?这是每个前端和全栈工程师的噩梦。上周刚重构完项目,今天升级框架,昨天的代码全是废的。 别慌。今天拆解【马爸爸网】实战中遇到的三个 高频面试题 。… · 2026/9/23 7:33:01

3步搞定razer驱动:从报错到实战项目避坑指南
3步搞定razer驱动:从报错到实战项目避坑指南

3步搞定razer驱动:从报错到实战项目避坑指南 报错堆成山,StackTrace 根本看不懂?别慌,这不仅是你的问题,更是很多开发者在接入硬件外设时的通病。当你在做一个 实战项目… · 2026/9/23 7:32:55

电影推荐系统毕业设计:协同过滤算法与Python源码实现
电影推荐系统毕业设计:协同过滤算法与Python源码实现

简介:这份资源是面向计算机、通信、人工智能、自动化等专业学生与教师的Python电影推荐系统毕业设计完整源码包,也可用于期末课程设计或课程大作业。项目为个人毕设成果,答辩评审分达98分,代码经过调试测试可正常运行,… · 2026/9/23 7:32:55

Flink REST API 完整指南:监控接口、异步操作与扩展机制
Flink REST API 完整指南:监控接口、异步操作与扩展机制

Flink REST API 完整指南:监控接口、异步操作与扩展机制 【免费下载链接】flink 项目地址: https://gitcode.com/gh_mirrors/fli/flink 导读 Flink 内置了一套 REST-ful 风格的监控 API,用于查询正在运行作业以及最近完成作业的状态与统计信息。… · 2026/9/23 7:32:55

3个核心避坑指南搞定喷墨打印机连供逻辑
3个核心避坑指南搞定喷墨打印机连供逻辑

3个核心避坑指南搞定喷墨打印机连供逻辑 别再对着教程发呆,代码跑不通才是真痛点。很多老哥在掘金技术社区问连供系统,答案往往不在纸上,而在数据流里。 概念速懂… · 2026/9/23 7:32:49

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

了解更多?预约专属演示

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

企业微信二维码