external-speaker外接喇叭进阶仿照它的积木架构开发你自己的硬件扩展完整教程【免费下载链接】external-speaker源师兄扩展项目: 外接喇叭 | 由源师兄组织创建项目地址: https://gitcode.com/yuanshixiong/external-speakerexternal-speaker外接喇叭是由源师兄组织创建的硬件扩展示例项目它用 5 个轻量文件把外接喇叭接入积木编程平台让新手可以拖拽积木完成播放音调、播放频率、停止播放。这篇完整教程带你逐文件拆解它的积木架构学会开发自己的硬件扩展。 先认识 external-speaker 外接喇叭能做什么这个扩展在积木侧边栏新增了一个外接喇叭分类提供 3 块积木积木作用可选参数喇叭播放音调播放 do/re/mi/fa/sol/la/si 七个音端口 p0、p1、p2、p8、p12、p13喇叭播放频率播放任意指定频率默认 1000Hz端口 频率数值停止播放让喇叭停止发声端口妙处在于积木拼好后会自动生成 Python 代码比如 blocksdef.js 中定义的代码生成器会把播放 do一块积木转成from ohcode import beepbeep(端口).on(262)这样的驱动调用——你不用手写代码硬件扩展照样能跑。 核心5 个文件搭起一套积木扩展架构这是仿写前最该看懂的部分。external-speaker 的整个扩展只由这几样东西组成config.json —— 设备档案声明我是谁blocksdef.js —— 积木长什么样 积木如何生成代码category.json —— 积木在侧边栏如何分组、摆什么默认值library/screen_extend.py —— 设备端 Python 库示例laba.zip —— 喇叭设备驱动包README.md —— 项目说明记住这个档案 → 定义 → 分类 → 驱动四层结构你自己的硬件扩展也只需要照葫芦画瓢。第 1 步用 config.json 注册设备档案打开 config.json只有 4 个字段Device设备全称如源师兄外接扩展喇叭Name侧边栏显示名称Description功能一句话说明HelpUrl帮助链接可留空 仿写提示开发新扩展时先把这四个字段填好这是平台识别你设备的身份证。第 2 步在 blocksdef.js 里画出你的第一块积木积木的外观由Blockly.Blocks定义。以播放音调积木为例blocksdef.js#L4-L19用FieldDropdown加下拉框端口p0~p13、音调do~si 对应 262~494HzsetPreviousStatement / setNextStatement让它能前后拼接成为语句块setColour统一配色本项目用#df21dcsetTooltip写一句鼠标悬停提示积木的灵魂是pythonGenerator.forBlockblocksdef.js#L21-L29它读取用户选择的端口和音调拼出驱动代码。三个积木共用同一套套路——先确保from ohcode import beep被导入再按端口创建beep(端口)实例最后调用.on(频率)或.off()。 仿写套路新增积木 写一个Blockly.Blocks[你的积木名] 一个同名的pythonGenerator.forBlock。第 3 步用 category.json 把积木装进分类面板category.json#L2-L37 声明了一个CATEGORYname为外接喇叭colour为#e11f71分类标题色contents里按顺序放一个LABEL说明文字 三个BLOCK条目频率积木的value_name输入口配了shadow默认值1000这样没插积木时也不会报错⚠️ 常见坑积木在 blocksdef.js 里定义好了但忘加进 category.json 的contents侧边栏就不会显示它。第 4 步设备端驱动怎么接library laba.zip积木负责前端驱动负责后端laba.zip 是喇叭设备驱动包运行环境据此加载beep等能力library/screen_extend.py#L3-L21 展示了设备库的写法风格把显示文字 / 显示图片封装成函数内部拼好带包头\xee\x81的串口协议字节串再返回开发你自己的硬件扩展时前端照抄本项目的三件套后端只需换成你设备的驱动库即可。❓ 新手仿写常见 3 问Q1想加一块播放 2 秒再停的积木改哪个文件主要改 blocksdef.js新增积木定义 代码生成器再到 category.json 的contents里加一个BLOCK条目。Q2为什么端口下拉只有 p0、p1、p2、p8、p12、p13这些是该主控板可驱动喇叭的可用引脚在FieldDropdown里集中维护换硬件时改这一处即可。Q3积木颜色和分类颜色不一样正常——积木色由 blocksdef.js 的globalcolor控制分类标题色由 category.json 的colour控制两者独立设置。 小结你的硬件扩展开发清单建config.json填设备档案写blocksdef.js积木外观 Python 代码生成器配category.json分类名、颜色、积木列表、默认值准备library/驱动库与设备驱动包对照 external-speaker 这 5 个文件逐项仿写你就能为自己的屏幕、电机、传感器快速做出一个完整的积木硬件扩展。【免费下载链接】external-speaker源师兄扩展项目: 外接喇叭 | 由源师兄组织创建项目地址: https://gitcode.com/yuanshixiong/external-speaker创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
【图像处理】基于双目视觉的物体体积测量算法研究附Matlab代码 ✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。🍎 往期回顾关注个人主页:完整代码获取 定制创新 论文复现私信🍊个人信条:做科研,… · 2026/9/25 8:24:07
DSM建筑物点过滤实战:从DEM生成到nDSM分类的完整技术路线 遥感图像处理这条线上,DSM到建筑物点过滤是个绕不开的坎。我最早接触这个需求,是做城市三维建模的时候,拿到一版DSM数据,满心欢喜地往建模软件里一丢,结果出来的模型跟长了毛似的——树冠、路灯、广告牌、甚至高架桥的… · 2026/9/25 8:24:01
多目标点击率预测实战:七种用户行为建模与shared-bottom方案 简介:面向微信视频号场景下的用户互动行为预测,这份2021年微信大数据挑战赛多目标预测方案聚焦读评论、点赞、点击头像、收藏、转发、发表评论、关注七种行为,构建基于用户行为数据的点击率预测模型,适合备赛学生、推荐系统学习者… · 2026/9/25 8:52:55
ISO 13485:2016设计开发程序落地指南:从标准条款到飞检证据链 简介:本资源是一份严格依据ISO 13485:2016标准编制的《产品设计与开发控制程序》实务文件,面向医疗器械企业质量管理人员、研发工程师及体系内审员,解决设计开发流程不规范、职责不清、跨部门协作低效等常见合规痛点。文件为单页PDF格式&… · 2026/9/25 8:52:55
声光效应与布喇格衍射:从晶体张量到声光调制器选型 简介:这份关于晶体光波传播的课程演示文稿,以北京理工大学《导波光学基础》教学内容为蓝本,面向光电、光学工程及相关专业学生与科研人员,系统梳理了光波在晶体中传播的核心概念与关键公式。资源包为单个PPT文件,大小约… · 2026/9/25 8:52:43
Atlas:面向 macOS/Rust 开发者的运行时快照与协作基础设施 1. 项目概述:Atlas 不是“地图集”,而是一套面向现代开发者的开源协作基础设施最近在 Rust 社区和 macOS 开发者圈子里,“atlas”这个词频繁出现在技术讨论、CI/CD 配置片段、本地开发环境脚本甚至团队内部文档里。它既不是地理信息系统里的传… · 2026/9/25 8:52:43
华为IPD与ISO9000融合的研发质量管理方案:从流程框架到落地实践 简介:本资源为基于华为IPD与质量管理体系融合的研发质量管理方案PPT,面向研发管理者、质量工程师及产品经理,帮助理解IPD主业务流框架与ISO9000质量管理体系的结合路径。内容涵盖IPD核心思想、产品实现流程、管理职责、资源管理、度量分析与改… · 2026/9/25 8:52:37
潮汐表原理与应用:从海洋动力学到渔业实践 1. 潮汐表查询的核心价值与应用场景潮汐表对于沿海地区的渔民、航海人员、海洋工程从业者以及海钓爱好者而言,就像农民手中的农历节气表一样重要。以乳山口这个典型的黄海海域为例,这里每天会有两次涨潮和两次落潮,潮差能达到3-4米。掌握精确… · 2026/9/25 8:52:30
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37