用废旧材料制作发光机械鱼:Circuit Playground Express与MakeCode入门实践

news2026/5/19 7:42:09
1. 项目概述当废旧材料遇见微控制器每次清理工作室看着角落里堆满的包装盒、塑料瓶和旧电线我总在想除了扔掉它们还能不能有第二次生命直到我尝试将一块小小的微控制器塞进这些“垃圾”里一切变得不一样了。今天分享的这个项目就是一次彻底的“变废为宝”用随处可见的废旧材料结合一块功能强大的Circuit Playground Express开发板制作一尾能自主游动、还会发出梦幻光芒的机械鱼。这个项目听起来可能有点复杂但它的核心逻辑其实非常清晰我们利用MakeCode图形化编程环境为开发板编写简单的控制逻辑让它去驱动一个连续旋转舵机模拟鱼尾的摆动。同时开发板自带的丰富传感器和可编程LED还能让这条鱼根据环境或预设程序变换色彩成为一件真正的互动艺术品。整个过程不需要焊接代码像搭积木一样直观非常适合作为嵌入式开发、机器人入门或STEAM教育的第一个实践项目。无论你是想带孩子体验创造的乐趣还是自己动手探索物理计算的世界这条用“垃圾”制成的发光机械鱼都是一个绝佳的起点。它不仅教会你硬件编程的基础更传递了一种“创造而非消费”的极客精神。2. 核心硬件选型与功能解析动手之前我们先得搞清楚手里这些“积木”各自是干什么的以及为什么选它们。这就像盖房子前先了解砖瓦水泥的特性能让你在搭建时事半功倍少走弯路。2.1 大脑核心Circuit Playground Express 开发板Circuit Playground Express是这个项目当之无愧的“大脑”。它不是一个需要你从零开始焊接电阻电容的裸板而是一个高度集成、开箱即用的微型计算机。我选择它主要基于三个核心优势这些优势对于新手和快速原型制作至关重要。首先是极低的上手门槛。板载了10个可编程的NeoPixel RGB LED灯、一个运动传感器、一个温度传感器、一个光传感器、一个声音传感器甚至还有触摸感应引脚。这意味着你想让鱼对光线变化做出反应或者拍手让它改变游速都无需外接任何额外模块直接编程调用即可。其次它支持多种编程方式。对于初学者MakeCode的图形化积木块编程几乎零门槛当你熟练后可以无缝切换到CircuitPython或Arduino进行更深入的代码编写一块板子陪你从入门到进阶。最后其坚固的设计和明确的标识如每个功能旁都有清晰的符号和名称大大降低了接错线的风险。对于这个项目我们将主要用到它的数字输出引脚来控制舵机以及板载的NeoPixel LED来提供灯光效果。注意市场上还有一款Circuit Playground Classic它不支持MakeCode。购买时请务必确认是Express版本否则后续代码无法上传。2.2 动力心脏连续旋转舵机普通的舵机只能在一定角度如0-180度间摆动而我们需要的是让“鱼尾”持续、往复地摆动这就需要连续旋转舵机。它的内部结构经过特殊设计当你给一个90度的信号时它会停止当信号大于90度如180度它会向一个方向全速旋转小于90度如0度则向反方向全速旋转。信号值离90越远转速越快。在这个项目中我们将舵机信号线连接到开发板的A1引脚。通过MakeCode编程我们可以轻松地设置一个在“慢速-停止-快速”之间循环的信号从而模拟鱼儿悠闲游动、突然加速、再缓缓停下的动态。选择微型舵机是因为它体积小、重量轻、功耗低非常适合由小型锂电池驱动不会给“鱼身”结构带来太大负担。2.3 绚丽外衣NeoPixel LED灯带氛围感全靠它NeoPixel不是普通的LED灯带它是一种智能可寻址LED。简单说灯带上的每一颗LED都可以通过一根数据线独立控制其颜色和亮度而不需要为每颗灯配备单独的控制器。我们只需要将灯带的数据输入端连接到开发板上任意一个支持数字输出的引脚如A0在代码中就可以像操作数组一样轻松设定每一颗灯的颜色实现流水、渐变、彩虹等复杂效果。我推荐使用带鳄鱼夹的版本这彻底免去了焊接的麻烦。你可以像夹子一样把它夹在开发板的焊盘上并且轻松地在鱼壳内部盘绕、固定让光线从内部均匀透出营造出生物发光的奇幻感。灯带的功耗需要注意全亮时电流较大因此我们后续的电源选择要留有余量。2.4 能量源泉电源方案选择移动的机器人必须摆脱电线的束缚。这里提供了两种主流方案3.7V 400mAh 锂聚合物电池或3节AAA电池盒。锂聚合物电池是我的首选。理由有三一是能量密度高同样体积下比干电池容量更大续航更久二是输出电压稳定充满约4.2V工作约3.7V正好落在Circuit Playground Express推荐的3V-5V安全范围内三是可重复充电经济环保。搭配一个带开关的JST延长线可以很方便地将其固定在鱼腹下方实现一键开关。AAA电池盒的优势是获取方便任何便利店都能买到适合临时测试或教学场景中快速部署。但其电压3x1.5V4.5V略高且随着电量下降电压会衰减影响舵机转速的稳定性。实操心得强烈建议为锂电池配一个微型USB充电板。这样你无需将电池从鱼体内取出只需拉出一根Micro USB线就能充电极大地提升了项目的完整性和便利性。3. 从零开始的图形化编程逻辑硬件是躯体代码才是灵魂。我们用MakeCode for Adafruit来赋予这条鱼生命。它的编程方式就像在拼图把代表不同功能的积木块拖拽、组合在一起直观且不易出错。3.1 开发环境搭建与首次连接首先用一根数据传输型的Micro USB线注意有些充电线只能供电不能传数据将Circuit Playground Express连接到电脑。按下板子中央的复位键你会看到所有LED快速闪烁红色然后变为绿色。此时电脑文件管理器里会出现一个名为CPLAYBOOT的U盘。如果看到的是CIRCUITPY双击复位键即可切换。打开浏览器访问MakeCode for Adafruit网站创建一个新项目。这个在线编辑器会自动识别你的开发板型号。编程界面左侧是模拟器中间是积木块分类区右侧是代码编辑区。我们所有的编程工作都在右侧完成。3.2 核心运动控制代码拆解鱼游动的核心是控制舵机。在MakeCode的积木菜单中找到“引脚”分类你会看到在引脚 [A1] 写入 [0]的积木块。这就是控制舵机的关键。原理是这样的对于连续旋转舵机写入值90代表停止。写入值大于90最大180舵机朝一个方向旋转数值越大转速越快写入值小于90最小0则反向旋转。为了让鱼尾有节奏地摆动我们需要让这个写入值在一个范围内周期性变化。我们可以这样构建逻辑使用当开机时积木初始化设置。使用无限循环积木来执行持续动作。在循环内用将 [变量] 设定为 [0]和以 [1] 为幅度更改 [变量]积木创建一个循环递增的变量比如从0到180然后再递减回来。将这个变量的值写入到引脚 A1。在每次写入后添加一个暂停ms[100]积木。这个暂停时间决定了游动节奏的快慢暂停时间短变量变化快舵机转速变化就快鱼就显得“急躁”暂停时间长变化慢游动就“悠闲”。一个更巧妙的做法是利用板载的滑动开关。我们可以用如果...那么...积木进行判断如果 引脚 [P5] 是 [高] 那么执行快速的游动模式写入值变化快否则执行慢速或停止模式。这样一个物理开关就实现了两种行为模式的切换互动性立刻提升。3.3 灯光效果编程与传感器联动灯光是点睛之笔。在“灯光”分类下有大量控制板载NeoPixel的积木。我们可以让灯光独立于运动展示自己的效果。最简单的使用将灯环所有灯设为 [红色]来设定静态颜色。但更有趣的是动态效果比如使用灯环 [彩虹] 特效循环运行积木一键生成彩虹渐变循环。你还可以在无限循环中结合将 [变量] 设定为 [光线强度]积木用光线传感器的读数来动态改变LED的亮度或颜色模拟鱼在深水暗和浅水亮环境下的发光变化。注意事项如果你外接了额外的NeoPixel灯带需要先在当开机时中用将灯环连接到引脚 [A0] 灯数 [30]积木进行初始化告诉开发板外接灯带的数据引脚和LED数量。之后所有对“灯环”的操作就会作用在这条外接灯带上了。将运动代码和灯光代码放在同一个无限循环里它们就会并行执行。你可以让灯光颜色随着游动节奏变化比如游得快时变成激进的红色慢时变成舒缓的蓝色创造出更丰富的表现力。这就是图形化编程的魅力通过简单的逻辑组合实现复杂的互动行为。4. 废旧材料变身机械鱼结构制作详解有了会动的“心脏”和发光的“皮肤”我们需要为它打造一个坚固又轻巧的“躯壳”。这部分是手工创意的集中体现没有标准答案但有一些经过验证的技巧可以让你做得更好。4.1 鱼身外壳的塑造与加固目标是制作一个中空、轻质、半透明的球形壳体。保鲜膜或废旧塑料袋是完美的初始模具材料。找一个大小合适的碗或球体比如小孩的塑料玩具球用保鲜膜紧密包裹几层。关键步骤来了在保鲜膜表面用透明胶带一层一层地缠绕覆盖。这里有个核心技巧不要胡乱缠绕。每一层胶带都尽量以不同的角度和方向交叉粘贴就像玻璃纤维加固的原理一样。这样能极大地提高壳体的整体强度防止局部脆弱开裂。总共覆盖6-7层直到壳体摸起来有足够的厚度和韧性不会轻易变形。完成后用剪刀小心地沿着“赤道线”将整个球壳剪成两半你就得到了两个半球。接下来是塑形。根据你想做的鱼种比如金鱼、锦鲤、热带鱼用剪刀将半球边缘修剪成流线型。然后在壳体上预先剪出几个开口背部一个用于安装背鳍身体两侧各一个用于胸鳍尾部一个用于容纳舵机和尾鳍连杆。开口位置要事先比划好确保内部的机械框架能顺利通过这些开口与外部鳍片连接。4.2 机械传动框架的搭建这是让鱼“游”起来的关键机械结构核心是将舵机的旋转运动转化为鳍片的往复摆动。我们需要制作一个安装在鱼体内的轻质框架。制作框架底座用废纸箱的瓦楞纸板剪出一个“工”字形或“井”字形的骨架这能保证结构稳固的同时最大限度减轻重量。制作鳍片转轴取一根竹签或烧烤签作为主转轴。剪三小段塑料吸管用热熔胶将它们以一定间距平行地固定在纸板框架上作为轴承座。然后将竹签穿过这三段吸管它应该能自由转动。连接舵机与转轴这是传动核心。将舵机的舵盘舵机自带的小圆盘用螺丝固定好。取一根回形针拉直弯成L形用热熔胶将短边垂直粘在舵盘边缘。L形的长边则与穿过吸管的竹签通过另一段剪开的吸管相连并粘牢。这样当舵机旋转时就会带动L形连杆做圆周运动进而推动竹签进行往复转动。安装鳍片用扭扭棒和胶带制作好鱼鳍的形状。在竹签上对应鱼鳍伸出的壳体开口位置用热熔胶将鳍片的根部垂直粘在竹签上。当竹签被舵机带动往复转动时所有鳍片就会同步摆动起来。安全提示热熔胶枪温度很高务必小心操作避免烫伤。建议在通风处使用并将胶枪放在支架上切勿平放。低龄制作者务必在成人监护下进行此步骤。4.3 电子系统的集成与固定最后一步把所有的电子部件优雅地塞进壳体内并确保它们不会在“游动”时互相干扰或松脱。固定主控板在鱼头部位的内壳上用笔描出Circuit Playground Express的轮廓。然后用尖嘴钳或剪刀沿着轮廓内侧约3毫米处开一个窗。将开发板从内部塞入使其正面带有LED和传感器的一面恰好卡在窗口处这样既能固定板子又能让LED作为“鱼眼”透出光。在板子背面和四周点少量热熔胶固定。布置灯带将NeoPixel灯带沿着鱼身内壁盘绕从头部到尾部形成一条光带。用热熔胶在几个关键点如拐角处、灯带背面轻轻点胶固定。注意胶点要小避免遮挡LED发光。将灯带的数据线用鳄鱼夹连接到开发板的A0引脚。连接舵机与电源使用鳄鱼夹转杜邦线将舵机的红线正极夹到开发板的Vout焊盘黄线信号夹到A1棕线负极夹到GND。将锂电池通过带开关的延长线连接到开发板的电池接口。总装与测试将整个机械框架连着舵机和鳍片放入下半部分鱼壳调整位置使鳍片从预先开好的口子中伸出。然后把上半部分鱼壳盖上沿着接缝处用热熔胶密封。胶不用太密每隔2-3厘米点一下即可方便日后打开维修。最后把带开关的电池线用胶固定在鱼腹下方。5. 调试、优化与创意扩展作品组装完成按下开关但事情可能不会一帆风顺。别担心调试是创客的必修课解决问题带来的成就感有时比一次成功更大。5.1 常见问题排查速查表问题现象可能原因排查步骤与解决方案舵机完全不转1. 电源未接通或没电。2. 接线错误。3. 代码未正确上传或引脚设置错误。1. 检查电池开关是否打开用USB线连接电脑看板子是否上电LED亮。2. 确认舵机三根线是否牢固地夹在正确的焊盘上红-Vout黄-A1棕-GND。3. 确认代码已成功拖入CPLAYBOOT盘并检查MakeCode中写入引脚积木设置的引脚号是否为A1。舵机持续单向高速旋转舵机中位90度停止点未校准。这是连续旋转舵机的常见情况。找到舵机底部的一个小电位器调节孔通常有个十字凹槽用小螺丝刀进行微调。在代码发送90信号时慢慢调节直到舵机停止。NeoPixel灯带不亮1. 数据线接触不良或接反。2. 代码中未初始化外接灯带。3. 电源功率不足。1. 检查鳄鱼夹是否夹紧数据线是否接在灯带的“DI”数据输入端灯带的“”和“-”是否接电。2. 在当开机时积木中确认使用了将灯环连接到引脚...并设置了正确的LED数量。3. 尝试用USB供电5V测试如果亮了说明电池电量可能不足。鱼游动姿态不协调1. 鳍片安装不对称或过重。2. 机械框架在壳体内有晃动。3. 舵机扭矩不足。1. 检查左右鳍片是否重量、大小基本一致安装角度是否对称。2. 在框架与壳体之间增加泡沫块或纸团作为缓冲和固定。3. 确保舵机已牢固固定在框架上。如果负载确实重可考虑换用扭矩更大的舵机。MakeCode无法识别设备1. 使用了充电线。2. 驱动问题。3. 板子型号不对。1.这是最常见的原因务必换一根确认可以传输数据的USB线。2. 尝试换一个电脑USB接口或重启电脑。3. 再次确认板子是Circuit Playground Express而非Classic版。5.2 性能优化与个性化改造基础功能实现后我们可以让它变得更聪明、更独特。优化游动算法目前的代码是让舵机匀速地正反转。你可以尝试更复杂的模式比如模拟鱼儿“窜一下-停顿-慢游”的自然状态。在MakeCode中你可以用多个暂停积木和不同的写入引脚值来组合出这样的非匀速运动序列。增加环境互动Circuit Playground Express板载的传感器是你的宝藏。除了之前提到的光控你还可以声控利用声音传感器设定拍一下手鱼就快速游动几下。触控利用触摸引脚如A2, A3在鱼身上贴上铝箔作为“触摸鳞片”摸一下就让灯光变色。姿态控制利用加速度计编写代码让鱼在“被拿起”倾斜时停止游动并闪烁红灯“抗议”。结构与外观升级防水尝试如果想让它真的在水里游可以用环氧树脂胶或塑料防水盒对电子部分进行灌封防水处理务必做好测试且锂电池防水需极其谨慎。材料升级用轻质木板或3D打印部件替换纸板框架能获得更精准、更耐久的机械结构。群体智能制作多条鱼为每条鱼的代码加入简单的红外发射/接收逻辑利用板载红外LED和接收器它们就能实现简单的跟随或避让行为。这个项目的真正价值不在于复刻一条完美的鱼而在于它为你打开了一扇门一扇用代码控制物理世界、用创意点石成金的大门。从这条用废旧材料制成的发光机械鱼开始你的下一个作品也许就是一个会自动浇花的盆栽一个提醒你坐直了的办公小助手或是一个陪伴孩子的故事灯。硬件编程的魅力正在于此。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2624300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…