用rduino和加速度传感器制作数字滚球迷宫后篇

KiCad 华秋发行版 new

供应链、设计、制造,一体成就未来

华秋PCB

高可靠多层板制造商

华秋SMT

高可靠一站式PCBA智造商

华秋商城

自营现货电子元器件商城

PCB Layout

高多层、高密度产品设计

钢网制造

专注高品质钢网制造

BOM配单

专业的一站式采购解决方案

华秋DFM

一键分析设计隐患

华秋认证

认证检测无可置疑

发资料

发帖

提问

发视频

扫码添加小助手

加入工程师交流群

前言

大家好!我是平原。本文是“用Arduino和加速度传感器制作数字滚球迷宫”的后篇。在前篇中,我们组装了电子电路,写入了Arduino程序,并确认了电子部件的工作情况。接下来,在本文中我们将完成实物迷宫的制作,并使用游戏引擎Unity实际制作游戏。请大家也一起参与挑战!

本项目的组成

本项目共分为六个部分。在前篇中,我们完成了作品规划、电子电路和Arduino程序。在后篇中,我们将按照以下1到3的步骤进行制作。

制作迷宫外壳

创建迷宫的3D模型

Unity程序

1. 制作迷宫外壳

迷宫的设计是决定游戏可玩性的重要因素。我们需要一边想象小球如何滚动一边制作迷宫。

我们按照以下步骤制作迷宫外壳:

设计盒子

设计迷宫

切割材料

组装盒子和迷宫

固定电子部件

粘贴标记

步骤1:设计盒子

>> 分发文件下载(50.4MB)

步骤2:设计迷宫

在这个迷宫中,将正方形的盘面分成10个方格×10个方格,并设置围墙。起点在左下角,终点在右上角。我创建了3种不同难度级别的迷宫。这里创建的迷宫数据不仅会用作激光加工机的切割数据,还会用于创建要在Unity中使用的3D模型。

在Illustrator中,将正方形分隔成10个方格 x 10个方格并绘制之间围墙。使用网格功能会很方便。需要一边想象小球的滚动一边思考迷宫的设计。

如果从头开始创建比较麻烦,可以参考下面的迷宫自动生成工具。

>>自动创建迷宫

完成后,调整线条的粗细,勾勒出整体轮廓,然后调整其大小以适应145mm x 145mm的盒子。

迷宫的地板与盒子底部的形状相同。将墙壁与地板粘在一起形成迷宫。然后雕刻起点(S)和终点(G)。

步骤3:切割材料

请使用创建的数据用激光加工机对椴木单板进行切割。椴木单板的厚度为4mm,请根据要使用的设备进行切割所需的设置。

切割后的迷宫。迷宫的墙壁很薄,应该小心处理,以免它们断裂。

步骤4:组装盒子和迷宫

用木材专用胶粘贴盒子。这种胶即使用量很少也可以粘得很牢固,不要用量太大哦。

以同样的方式将迷宫的地板和墙壁粘在一起。请用牙签等在迷宫的墙壁背面粘上少量的胶,然后根据地板和墙壁的位置进行粘贴。注意不要混淆表面和背面,以及起点和终点的位置。

步骤5:固定电子部件

将面包板嵌入支架中,并用双面胶将支架和Arduino UNO固定在盒子上。

步骤6:粘贴标记

制作标记用于反射式光电传感器的读取。请在不干胶纸上打印两个30mm x 30mm正方形并列的矩形。由于反射式光电传感器对喷墨打印机的墨水没有反应,所以请用黑色的笔涂抹为黑白、白黑、黑黑。

将标记粘贴在盖子背面的反射式光电传感器的位置。下面的照片中,从左到右的难度等级依次为1级、2级和3级。1级难度的迷宫,反射式光电传感器1为黑色,反射式光电传感器2为白色。难度的差异是通过白色和黑色的组合来判断的。

2. 创建迷宫的3D模型

我们按照以下步骤创建迷宫的3D模型:

从Illustrator导出SVG文件

将SVG文件导入Fusion360

利用推挤功能创建立体模型

输出OBJ文件

步骤1:从Illustrator导出SVG文件

将Illustrator中的迷宫数据导出为SVG文件。移动在“1.制作迷宫外壳”的步骤2中创建的迷宫轮廓数据,使中心为0,0。从Illustrator菜单中选择[文件] > [另存为],然后选择SVG作为文件类型。请创建从1级到3级共3个文件。

步骤2:将SVG文件导入Fusion360

将步骤1中导出的SVG文件导入到3D CAD软件Fusion 360中。Fusion360的安装方法请参考其官网:

>> Fusion360

请从Fusio 360的菜单中,选择 [插入] > [插入SVG], 将步骤1中导出的SVG文件导入Fusio 360。导入的形状是草图。

步骤3:通过推挤功能创建立体模型

推挤迷宫的形状,使其成为立体模型。请将整个草图向下推挤5mm以使其成为地板。接下来,请仅将墙壁部分向上推出5mm。

在2级难度迷宫的地板上打两个用来穿越的孔,孔径约为Φ8mm。3级难度的迷宫,在中央挖空Φ48mm的圆圈,制作两层地板。

步骤4:输出OBJ文件

3. Unity程序

终于到了Unity中的程序部分了。请按照以下步骤操作:

在Unity中创建一个新项目

加载3D模型

配置小球

运用物理运算

主程序

设置终点

2级关卡

3级关卡

切换迷宫

步骤1:在Unity中创建一个新项目

>> Unity

请用3D模式创建一个新的Unity项目。

步骤2:加载3D模型

加载迷宫的3D模型。将Fusio 360导出的OBJ文件拖放到Unity项目面板中的Asset文件夹中。

创建一个空的GameObject来挂载迷宫。请从Unity菜单中,选择[Game Objects(游戏对象)] > [Create Empty(创建空对象)]。 将新建的GameObject重命名为“MazeObject”,并将Transform的位置设置为0。

将3D模型配置于stage上。将刚刚加载的地图的3D模型“MazeLv1”拖放到层级面板的“MazeObject”中。如果直接这样用,大小和旋转会很奇怪,因此需要进行调整以使其处于正确的位置。请通过检视面板的Transform,将旋转设置为X270、Y180,将缩放设置为0.2。以同样的方式设置2级的3D模型。3级由“MazeLV3-A”和“MazeLV3-B”两个3D模型组成,因此请创建一个名为“MazeLv3”的空GameObject,并将这两个3D模型放入其中。

需要更改每个级别的颜色。请从Unity菜单中选择 [Asset] > [Create] > [Material],创建三个材质。名称分别是“MatLv1”、“MatLv2”和“MatLv3”。在材质的Inspector面板的反照率(Albedo)项目中更改颜色。我们将“MatLv1”设置为浅蓝色,“MatLv2”设置为黄色,“MatLv3”设置为橙色。请将创建的材质拖放到“MazeLv1”、“MazeLv2”、“MazeLv3-A”、“MazeLv3-B”中的网格上。可以看到迷宫已被着色。

当前,三个迷宫是重叠显示的,但“MazeLv2”和“MazeLv3”处于初始状态,可以将它们禁用,在Inspector面板中名称的左侧取消选中即可。

步骤3:配置小球

将小球配置在起点。请从Unity菜单中,选择[Game Objects(游戏对象)] > [3D Objects(3D对象)] > [Sphere(球体)]。对象的名称是“Sphere”。更改为从正上方向下看的视角,更容易对齐位置。我想让小球从空中落下,所以将y设置为5.0左右。

步骤4:运用物理运算

给3D模型赋予判断碰撞的功能。请在“MazeObject”中选择“MazeLv1”,在Unity菜单中选择[Component(组件)] > [Physics(物理)] > [Rigid Body(刚体)]。从刚体的设置项目中取消选中“Use Gravity(使用重力)”并选中“Is Kinematic(开启动力学)”。碰撞检测项请选择“连续且动态地进行碰撞检测”。需要减少墙壁的摩擦力。然后请从Unity菜单中选择[Component(组件)] > [Physics(物理)] > [Mesh Collider(网格碰撞器)]。网格碰撞器设置项目中的网格,请选择“MazeLv1”中包含的网格。

将刚体和网格碰撞器附加给“MazeLv2”、“MazeLv3-A”和“MazeLv3-B”并进行相同的设置。

最后,将刚体附加给小球。选择“Sphere”,然后从Unity菜单中选择 [Component(组件)] > [Physics(物理)]> [Rigid Body(刚体)]。我希望“Sphere(球体)”根据重力移动,因此仍保持选中“UseGravity(使用重力)”。

如果在这个阶段执行程序,小球应该会落下并碰撞迷宫。您可以试试看这部分的运行情况。

步骤5:安装Serial Port Utility Pro

>> Serial Port Utility Pro

然后,创建一个空的GameObject,并附加SPUP组件。请从Unity菜单中,选择[Game Objects(游戏对象)] > [Create Empty(创建空对象)]。 将新创建的游戏对象重命名为“SPUPObject”。选择“SPUPObject”后,请从Unity菜单中选择[Component] > [SerialPort] > [SerialPort Utility Pro],添加组件。

步骤6:主程序

创建一个用SPUP执行串行通信并根据加速度传感器模块的值移动迷宫的程序。这是本项目的核心程序。

请将“MazeScript”拖放到“MazeObject”。

请单击项目右下角的加号图标。将Maze Object(迷宫对象)拖放到“无(对象)”字段。单击右上角的Nofunction下拉菜单,然后选择[MazeScript] > [ReadComplete]。

如果在这里执行程序,应该可以收到来自Arduino的加速度传感器模块数据,并且迷宫应该可以动了。那就试试这部分程序的运行情况吧。然后,该休息一下了!

步骤7:设置终点

我们需要创建一个当成功到达终点时做出反应的机制。在终点设置一个用于判断碰触终点的透明对象(触发器),当小球碰到触发器时,会显示文本对象。

请从Unity菜单中选择 [Game Object] > [3D Object] > [Cube],创建一个立方体。将其重命名为“GoalTrigger”,并将其放置在层级面板的“MazeObject”中。移动到地图右上角的终点附近,通过缩放来调整大小。请取消选中“Mesh Renderer(网格渲染器)”,并将其设为隐藏,选中“BoxClider”的“设为触发器”。

然后需要配置文本对象。请从Unity菜单中选择[Game Object] > [3D Object] > [3DText]。将其重命名为“GoalText”,并将其放置在层级面板的“MazeObject”中。当使Transform的X旋转90度时,应该可以看到“HelloWorld”字样。在检视面板的文本项目中输入“GOAL!!!”。改变Transform的位置,将其移动到终点附近,将缩放设置为 0.2,并将字体大小设置为 100。

将用于判定到达终点的程序附加到“GoalObject”。请从Unity菜单中选择[Assets] > [Create] > [C# Script(C#脚本)],创建一个C#文件,并将其命名为“GoalScript”。双击C#文件打开编辑器,输入以下代码。

请将“GoalScript”拖放到“GoalTrigger”,将“GoalText”拖放到“Goal Script”的“Goal Text”项目中。

从“MazeObject”的检视面板中,将“GoalText”拖放到“MazeScript”的“GoalText”栏中。

如果在这里执行程序,当到达终点时会显示“GOAL!!!”,并且振动电机应该会振动。要停止振动时,请按空格键重置游戏。终于像游戏样了!

步骤8:2级关卡

需要给2级难度的迷宫添加扭曲功能。将触发器配置在地板开孔的下方,然后将小球移动到扭曲对象的坐标处。

首先,请禁用“MazeLv1”并激活“MazeLv2”。就像设置到达终点判定机制一样,制作一个立方体,将其放在地板开孔的下方,然后选中“BoxClider”的“设为触发器”。对象的名称是“WarpIn1”和“WarpIn2”。

接下来,需要配置对象,用来指定要扭曲的目标。请从Unity的菜单中选择[Game Object] > [Create Empty]。对象的名称是“WarpOut1”和“WarpOut2”。将其配置在另一个孔的附近。

请将“WarpIn1”、“WarpIn2”、“WarpOut1”和“WarpOut2”放入层级面板的“MazeLv2”中。

需要编写一个脚本来控制扭曲。请创建C#文件并在编辑器中输入以下代码:

当执行这部分程序时,小球掉进洞里,会穿越到另一个洞附近。

步骤9:3级关卡

3级难度的迷宫由两部分组成。迷宫外侧为“MazeLv3-A”,中间圆形挖空部分为“MazeLv3-B”。需要使中心部分缓慢旋转。请禁用“MazeLv2”并激活“MaseLv3”。然后编写使对象旋转的代码。请创建一个C#文件并输入以下代码:

步骤10:切换迷宫

终于完成了这三个迷宫。最后,我们需要进行一些设置,使替换实物迷宫时3D模型迷宫也会切换。请在1级实物迷宫放置在盒子上的状态下,运行Unity项目。当按下空格键时,控制面板上将会显示如下所示的反射式光电传感器反应值。

photoRef1:451 photoRef2:971

在1级实物迷宫的背面,在反射式光电传感器1的位置贴有黑色标记,在反射式光电传感器2的位置贴有白色标记。也就是说,反应值为黑色451,白色971。根据反射式光电传感器的高度,该值可能会有所不同,但存在“黑色<白色”的关系。

1级是黑白,2级是白黑,3级是黑黑,所以需要确定白色和黑色的阈值,当满足每个条件时就切换迷宫。

int threshold = 700;//反射式光电传感器阈值

在按下空格键时调用的setMaze()中,处理不同的情况。

已完成的Unity项目请参考分发文件中的“UnityApp”。但是,免费版的SerialPortUtilityPro无法分发文件,因此删除了SerialPortUtilityPro包和“SPUPObject”。请参阅步骤5进行设置。

4. 结束语

大家辛苦了!这个“数字滚球迷宫”怎么样?我认为这是一个使用Arduino和传感器将实物和数字内容混合在一起的有趣作品。

本系列连载一览

前篇:用Arduino和加速度传感器制作数字滚球迷宫后篇:用Arduino和加速度传感器制作数字滚球迷宫(本章)

平原真

浏览量

浏览量

浏览量

浏览量

扫码添加小助手

加入工程师交流群

下载发烧友APP

电子发烧友观察

长沙市望城经济技术开发区航空路6号手机智能终端产业园2号厂房3层(0731-88081133)

THE END
0.太牛了!这不是普通的航模!军迷制作运20模型一飞冲天太牛了!这不是普通的航模!军迷制作运-20模型一飞冲天北青网-北京青年报 北京 22 打开网易新闻 体验效果更佳从黄岩岛大败而归后,菲律宾军方高层,再也不敢喊“动武”口号 小雪有话说 打开APP 西方医学家:全球首台相控阵CT问世中国,先进得不像是中国发明 环球地理密语 8跟贴 打开APP 棋友们要的布局飞刀jvzquC41o07757hqo1|0xrigq1\P5[KG8QX/j}rn
1.珠海航展上的民用版运#中国航展# 珠海航展上的民用版运-20模型。诚然,运-20对于中国来说有着很大的历史意义与战略价值,但它说到底也只是架运输机,是拉货的。既然是拉货,那么带迷彩jvzquC41m0yjpj3ep1gsvrhnga;:5B62;497a:;3hh?e9=56227dwtf0jvsm
2.把国之重器的震撼与荣耀,摆上你的桌面运20飞机模型航模军事迷上滑查看更多视频 -- 我是有底线的 --把国之重器的震撼与荣耀,摆上你的桌面 运20 飞机模型航模 军事迷 2025-06-25 00:00 · 0次播放 发布于:江西省 拳击那点事 +订阅 +1 评论 全部 还没有人评论过,快来抢首评 抢首评 相关推荐 查看更多精彩内容 jvzquC41o0ypj~3eqo5b1B5978?599d322726:>7
3.Unity3D2019下载Unity3D游戏引擎2019官方正式版下载支持的平台比其他任何制作引擎都丰富:通过United,您可接触到最广的玩家,并为您的IP提供面向未来的保障,无论行业如何发展变化或者您的设想如何变化. 3、【顶级性能】 高级分析工具:在整个开发过程中不断优化您的内容,使用UnityProfile特性。例如,检查你的内容是CPU还是GPU,并找出那些需要改进的地方,这样你就可以为你jvzq<84yyy4xkw|kp94dqv4uqhz06?9220nuou
4.太牛了!这不是普通的航模!军迷制作运太牛了!这不是普通的航模!军迷制作运-20模型一飞冲天2025-07-18 19:29:16 北青网-北京青年报 北京 举报 0 分享至 00:00 / 01:37 速度 洗脑循环 北青网-北京青年报 85.3万粉丝 北青网官方网易号 00:27 专业!骨科医生实操中的硬核操作,使“全力"为患者取髓内钉 00:41 把学校搬到十堰来上课,jvzquC41yy}/3?80eqs0x8{kfgu0XX8THG
5.高一上学期数学教学计划(通用20篇)高一上学期数学教学计划(通用20篇) 时间就如同白驹过隙般的流逝,我们又将迎来新的喜悦、新的收获,做好计划可是让你提高工作效率的方法喔!相信许多人会觉得计划很难写?下面是小编整理的高一上学期数学教学计划,希望对大家有所帮助。 高一上学期数学教学计划 1 jvzquC41yy}/qq6220ipo8pcqunj1sncqz{flrmwc1<35@;70jznn
6.升级全球地景数据库模型库新增“运20”“运油PART10 完善模型库 模型库增加基于PBR材质的“运-20”运输机、“运油-20”加油机等装备,机身、灯光等主要部件均1:1建模,具有高光、法线、夜景等细节纹理,能够模拟出自然光照、环境反射、夜间灯光等效果,具有较高的仿真逼真度。 运-20 运油-20 主要bug修复 1、修复黄昏太阳有可能挡住远处山体的问题; 2、jvzquC41yy}/x|{ge0ipo8sgyuoohx47:975:93jvor
7.运20(Y2013年1月26日下午14时整,运-20在阎良基地顺利升空,首飞圆满成功。运-20的成功首飞,标志着中国航空工业的一次重大突破,中国拥有了属于自己的大型运输机,是中国空军建设战略空军的一座里程碑。运-20(Y-20)重型运输机飞机坦克模型动态厂家,运-20(Y-20)重型运输机,坦克模型厂家,飞机模型厂家,军事模型厂家,动态坦克jvzquC41|jkoiƒmqw0726?<0eqs0kwkq13974:5490nuo
8.课程设计说明书(全文)模型制作的心得体会 在这次的课程设计中不仅考验了我们所学习的知识,也培养了我们如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了理解,也学会了做人与处事。 课程设计是我们专业课程知识综合应用的实践训练,我们要认真 的完成课程设计jvzquC41yy}/;B}wgunv0lto1y5l6n34dhw6{y0jvsm
9.仿真案例零部件测绘实践虚拟辅助教学技术的做法是,以实物模型为基本要素、以实物模型测绘为主线,用计算机虚拟现实的方法,制作图画和动画形式为主的直观形象,去解析零部件的形状结构和测绘过程。 将虚拟辅助教学融于测绘实践教学的过程是:布置测绘任务;观测分析实物模型;以对零部件测绘方法和过程为指导;以动画为主去表达零部件形状结构;教师依 jvzq<84|v/~mhƒ3jdwgt0niw0et0hƒfn0jzn
10.打造你的航空飞行司令部!森宝战机积木,歼20、歼15、武直10随你选运20大型运输机 运-20大型运输机,也叫「鲲鹏」 它是我国自主研发的新一代大型运输机 可在各种复杂气象条件下完成长距离运输任务 整个模型有1416块积木颗粒 机身尺寸也达到了49.7cm 翼展更是有52.9cm 正如它的名字「大型运输机」一样,就是大! 运输机的功用就是用于运输装载 jvzquC41el4tkwf0eqs/ew4ctvodnnx1xkkx1>>753?12<:1388e8@=;527:2:6xhc
11.运军事类纸模型 23年6月24日 4 1.5k Y-20 –运-20 军用大型运输机纸模型 文件格式:.PNG 文件大小:4.25 MB 纸模页数:4页 组装说明:有 下载条件:100积分 拼接难度:有点难 纸模出处:请知道作者的朋友帮忙补充 下载权限 普通用户组: 100 VIP用户组: jvzquC41rcvft7yx1{332671
12.神州军工飞行员亲述:运从报道内容来看,央视记者走进中部战区空军某训练场,见证了运-20起飞的全过程。根据央视记者的现场描述,飞机从滑跑到拉升,只用了不到20秒的时间,也就是说在很短的距离内运-20就已经飞起来了,并称飞机的短距起降能力确实令人惊讶。 为了达到降低起降距离的目的,必须采用减阻增升的设计。 jvzquC41zwkrk~3eqo58;>;727:86869;8=9;@9
13.2021年高中艺体特长生如何考入成都石室中学?查收这份攻略机器模型制作由我校提供器材。 六、舞蹈 代码 51 (一)测试内容及所占分值 总分100分 1.自选成品舞(80分):时间3分钟以内; 2.基本功测试(20分):跳、转、翻、技术组合(软开度、控制能力等基本功技巧)。 (二)注意事项 1.伴奏音乐自备自编,MP3格式,单独存于U盘,一盘一曲; jvzquC41ukiiwjs0ueum0lto0et0ip}y146339;17:799@840jznn
14.物理科技小制作、小发明参考作品实施方案制作材料:一块长方形木板,两个长短不一空易拉罐,两个废弃小型马达,细铁丝,废吊扇扇叶,泡沫,铜丝,铁片,电源开关,导线,胶布,胶水,螺丝。 制作过程: 1、用一个长方形木板,把前面两角削去。 2、把长的那个易拉罐用铁丝固定。 3、用扇叶分别斜绑在木板与易拉罐上。 jvzquC41yy}/5?5fqe4dp8ftvkimg87558>59h8542:17B50jvsm
15.送运20模型!送运-20模型! 2016年7月6日 国产大型运输机运-20 正式列装 成为人民空军的一员 6年来,上高原、飞远海 跨大漠、出国门 “鲲鹏”展翅,砺剑空天 “胖妞”最新高清大图,快收藏jvzq<84yyy4937hp1vv04974/2=02@4eqpzfp}d323<:7:=0jvs
16.男子用微缩模型神还原高启强老家:耗时11天,最小物件高度仅3毫米山东济南“80后”微缩模型制作师追完热播剧《狂飙》后,用1:20的比例,还原剧中高启强老家,细节满满,受到不少剧迷围观。3月4日,微缩模型制作师李寿升向极目新闻记者介绍,制作此模型耗时11天,用了大小物件400个左右,最小物件是柜子上的门锁,仅3毫米高。 jvzq<84pgyy/jww0ep5tj|1ctzjeuj131775:>:43?47<76:7<45