超声波模块项目结构剖析:config.json、category.json、blocksdef.js、sonar.py四件套是如何协作的?
超声波模块项目结构剖析config.json、category.json、blocksdef.js、sonar.py四件套是如何协作的【免费下载链接】CupCode_HC-SR04超声波传感器模块源师兄扩展项目: 超声波模块 | 由源师兄组织创建项目地址: https://gitcode.com/yuanshixiong/ultrasonic-moduleHC-SR04 超声波传感器是新手入门测距的常用硬件但「超声波模块」扩展包在背后究竟是怎么工作的本文以CupCode_HC-SR04 超声波传感器模块扩展项目为例用通俗易懂的方式带你剖析 config.json、category.json、blocksdef.js 和 library/sonar.py 这四个文件是如何分工协作把一块积木变成可用的超声波测距工具的无需深厚编程基础也能看懂。 项目目录一瞥整个扩展包结构非常精简核心就是「四件套」加一份文档文件角色一句话职责config.json身份名片声明模块名称、描述与适用硬件category.json工具箱注册表决定积木出现在哪个分类、什么颜色blocksdef.js积木工厂绘制积木界面并把积木翻译成 Python 代码library/sonar.py底层驱动操控 Trig/Echo 引脚真正完成测距README.md使用手册接线说明、积木用法与常见问题 config.json模块的「身份名片」打开 config.json你会发现它只有寥寥数行Device标明目标硬件为「大师兄板」Name模块显示名为「HC-SR04超声波」Description一句话功能描述——「获取到障碍物的距离」它是整个扩展包的「门面」平台靠它知道这个扩展叫什么、装在哪块开发板上。改名字、换硬件第一步就是改这里。 category.json决定积木出现在哪里category.json 是积木在工具箱中的「注册表」name分类名「超声波」也就是积木菜单里显示的分类colour#cc0033即分类的深红色后续 blocksdef.js 中积木颜色与它保持一致contents登记了唯一的积木类型ohcode_extend_1简单说config.json 管「模块叫什么」category.json 管「积木摆在哪」。少了这一步积木就无处安放。 blocksdef.js画出积木并生成 Python 代码blocksdef.js 是整个扩展包中最「聪明」的文件它身兼两职积木界面定义在 blocksdef.js 中平台用 Blockly 描述语言画出「超声波距离值」积木一个单位下拉框厘米/毫米、一个Trig引脚下拉框、一个Echo引脚下拉框可选 P0 / P1 / P2 / P8 / P12~P16。用户拖积木、选参数全部发生在这里。一键生成 Python 代码更关键的是 blocksdef.js 中的代码生成器当用户点击「生成代码」时积木会被自动翻译成类似下面的 Python 片段——from sonar import HCSR04 ultra_0 HCSR04(0, 0) # TrigP0, EchoP0 print(ultra_0.distance_cm()) # 毫米模式则为 * 10注意细节实例名由Echo 引脚号决定如ultra_0选择「毫米」时自动乘以 10。你不需要手写任何一行 Python积木参数就直接决定了代码内容。 library/sonar.py真正的「发动机」积木生成的代码最终都指向 library/sonar.py 中的HCSR04驱动类核心原理是「声纳计时」向 Trig 引脚发送10 微秒的高电平脉冲触发发射用time_pulse_us()测量 Echo 引脚回波高电平的持续时间按声速 343 m/s 换算成距离除以 2声波是往返的保留两位小数返回几个新手友好的设计见 sonar.py超时保护默认回波超时 30000 µs约合 5 米量程超量程返回None而不是死等单位换算distance_cm()返回厘米毫米只需× 10 四件套协作全景从点击到测距把四个文件串起来一次完整的测距是这样流动的config.json→ 平台识别出这是「HC-SR04超声波」模块category.json→ 「超声波距离值」积木出现在工具箱的超声波分类blocksdef.js→ 用户选单位、选引脚 → 自动生成HCSR04(...).distance_cm()代码sonar.py→ Trig 触发、Echo 计时 → 算出厘米/毫米距离四个文件各管一段互不干扰改硬件适配改config.json调分类颜色改category.json加参数改blocksdef.js优化测距算法才动sonar.py——这就是模块化设计的魅力。 新手上手小贴士结合 README.md 的常见问题记住三点少走弯路读数一直为 0先查 Trig/Echo 是否接反、积木里的引脚是否与实际接线一致返回 None超出量程默认约 5 米把障碍物拉近再试毫米模式超量程时读数无效使用前先判断是否为None 延伸资料完整接线与积木用法README.md底层驱动源码library/sonar.py积木定义与代码生成blocksdef.js掌握这套「四件套」协作模式后你再看其他传感器扩展包也能一眼读懂它们的门道。【免费下载链接】CupCode_HC-SR04超声波传感器模块源师兄扩展项目: 超声波模块 | 由源师兄组织创建项目地址: https://gitcode.com/yuanshixiong/ultrasonic-module创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Hypothesis 复杂输入生成全指南:从 `from_type` 到 `composite` 与 `data` 策略

Hypothesis 复杂输入生成全指南:从 `from_type` 到 `composite` 与 `data` 策略

测试开发工具 【免费下载链接】hypothesis The property-based testing library for Python 项目地址: https://gitcode.com/gh_mirrors/hy/hypothesis 点击查看 免费下载 属性测试(property-based testing)入门之后,往往会遇到两…

2026/9/25 6:55:22 阅读更多 →
Atlas 300V 24G部署YOLOv5全流程实战:驱动、模型转换到多路视频推理

Atlas 300V 24G部署YOLOv5全流程实战:驱动、模型转换到多路视频推理

如果你也在搜“atlas 部署 yolo”的案例,或者被“atlas 300v 24g 是运算加速卡吗”这个问题纠结过,那这篇内容应该能帮你省下不少时间。我手上正好有一张 Atlas 300V 24G,前后折腾了快三个月,从驱动装不上、模型转换报错&#xff…

2026/9/25 6:55:22 阅读更多 →
MyBatis核心原理与实战:缓存、分页插件及高频问题排查

MyBatis核心原理与实战:缓存、分页插件及高频问题排查

做Java后端开发的人,几乎都绕不开MyBatis这个名字。从早期的SSH整合到现在的SpringBootMyBatis-Plus,这个半自动ORM框架在国内Java生态里站得非常稳。市面上讲MyBatis使用的文章一抓一大把,但真正讲清楚框架原理和核心特性的内容并不多。很多…

2026/9/26 9:59:59 阅读更多 →

最新新闻

Ubuntu 16.04 下 CUDA/cuDNN 卸载升级与 TensorFlow 重装:TaoToken 统一 Key 配置骨架

Ubuntu 16.04 下 CUDA/cuDNN 卸载升级与 TensorFlow 重装:TaoToken 统一 Key 配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/26 10:00:15 阅读更多 →
MySQLTuner 本地开发同步工作流:版本一致性、Changelog 自动整理与发布前自检实战

MySQLTuner 本地开发同步工作流:版本一致性、Changelog 自动整理与发布前自检实战

数据库运维 【免费下载链接】MySQLTuner-perl MySQLTuner is a script written in Perl that will assist you with your MySQL configuration and make recommendations for increased performance and stability. 项目地址: https://gitcode.com/gh_mirrors/my/My…

2026/9/26 10:00:15 阅读更多 →
嵌入式驱动从“能跑”到“不崩”的工程化实践

嵌入式驱动从“能跑”到“不崩”的工程化实践

1. 从“灯亮了”到“客户退货”:驱动开发里最隐蔽的断层你写完一个GPIO点灯驱动,烧进板子,LED稳稳亮起——那一刻的成就感,我太熟悉了。十年前我在深圳一家工控设备厂做第一版电机控制固件,也是这样:UART收…

2026/9/26 10:00:15 阅读更多 →
坐标转换模型实战:仿射变换与布尔莎七参数配置验证

坐标转换模型实战:仿射变换与布尔莎七参数配置验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/26 10:00:15 阅读更多 →
Windows-universal-samples 触控键盘(Touch Keyboard)UWP 示例详解:默认显示行为与编程控制

Windows-universal-samples 触控键盘(Touch Keyboard)UWP 示例详解:默认显示行为与编程控制

示例工程 【免费下载链接】Windows-universal-samples API samples for the Universal Windows Platform. 项目地址: https://gitcode.com/gh_mirrors/wi/Windows-universal-samples 点击查看 免费下载 本指南以仓库中归档的 Touch Keyboard 示例 为线索&#xff0…

2026/9/26 10:00:15 阅读更多 →
同步相量计算算法对比:FFT、小波与HHT的Matlab实现

同步相量计算算法对比:FFT、小波与HHT的Matlab实现

电网里做测量和算法的人,大概率都跟同步相量计算打过交道。PMU装置往现场一挂,要求就是能在各种复杂工况下把电压电流的相量(幅值、相位、频率)给准了,一旦动态扰动来了信号畸变,传统傅里叶那套就会露馅。这…

2026/9/26 9:59:15 阅读更多 →

日新闻

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、…

2026/9/26 0:00:25 阅读更多 →
学校官网模拟全流程实践:从页面布局到后端接口与部署

学校官网模拟全流程实践:从页面布局到后端接口与部署

如果你正在找一门 Web 大作业的题目,或者刚开始接触 Web 前端开发想做点能拿来展示的东西,“学校官网模拟”几乎是最稳的选择。题目看着简单,但要把导航、新闻列表、轮播 Banner、二级页面、后台数据都串起来,其实已经把前端布局、…

2026/9/26 0:00:25 阅读更多 →
超级玛丽游戏源码C++:从零搭建横版跳跃游戏工程

超级玛丽游戏源码C++:从零搭建横版跳跃游戏工程

简介:这是一份面向游戏开发初学者与C进阶学习者的超级玛丽(超级马里奥)游戏源码,基于C面向对象编程实现,适合想通过经典项目理解游戏主循环、角色类设计、地图关卡加载与物理碰撞检测的读者参考。压缩包共49个文件&…

2026/9/26 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/9/25 20:29:09 阅读更多 →

月新闻

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

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

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

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

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

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

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

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

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

2026/9/25 19:27:26 阅读更多 →