数字骰子设计编程(iLaser造物课程数码骰子)
数字骰子设计编程(iLaser造物课程数码骰子)使用光电传感器来检测时,需要减少环境光对程序的影响,将光电传感器设计在底部,防止光电传感器与桌面太近造成误差,底部也设计了两层,将光电传感器与桌面隔开一段距离。同时Nano主控板安装在底部,需要将螺丝孔预留。在考虑椴木板之间拼接紧密,设计了带有尖角的卡扣。模型使用的材料是3mm的椴木板。骰子有6个面,为了使骰子具备层次感,使用双层的结构,第一层镂空设计,第二层在适当的地方绘制图案。侧面设计美国队长的图案,它的内层绘制五官。美国队长的盾牌则使用镂空设计,在外层也绘制了图案。
项目背景在日常生活中,与朋友一起游戏时,像下飞行棋、大富翁等游戏,会经常使用到骰子,甚至决定哪位朋友带饭、打扫卫生也会用到骰子。本实践就以此为切入点,制作一个数码骰子,模拟掷骰子游戏。
本案例使用了3mm的椴木板作为模型材料,iLaser桌面式激光切割机切割模型。
项目分析这次设计的数码骰子,当骰子被拿起来,再放下时,能够随机显示骰子的点数,同时能够振动给予反馈。
考虑到屏幕只需要显示点数,不需要太复杂的功能,因此选用点阵屏来显示,而振动使用振动马达恰如其分。
模型使用的材料是3mm的椴木板。骰子有6个面,为了使骰子具备层次感,使用双层的结构,第一层镂空设计,第二层在适当的地方绘制图案。
侧面设计美国队长的图案,它的内层绘制五官。
美国队长的盾牌则使用镂空设计,在外层也绘制了图案。
在考虑椴木板之间拼接紧密,设计了带有尖角的卡扣。
使用光电传感器来检测时,需要减少环境光对程序的影响,将光电传感器设计在底部,防止光电传感器与桌面太近造成误差,底部也设计了两层,将光电传感器与桌面隔开一段距离。同时Nano主控板安装在底部,需要将螺丝孔预留。
整体的设计如下图所示。
考虑到激光切割后安装的便捷性,主板、传感器、执行器均焊有螺母,方便安装,使用Type-C接口,方便数据的写入。
硬件清单
Nano主控*1
点阵屏*1
光电传感器*1
振动马达*1
10cm连接线*3
硬件一览
Nano主板
P1~P8端口上有卡口,防止连接线插反。除了USB供电外,还可以使用7~12V电池盒供电。
点阵屏
点阵屏的卡口在背面。
光电传感器
光电传感器的卡口也在背面。
振动马达
光电传感器的卡口也在背面。
连接线
有四种规格可以选择,分别是10cm、15cm、20cm、30cm,本教程使用的都是10cm的连接线。
连接示意图
光电传感器接着P1端口,点阵屏接在P2端口,振动马达接在P3端口。
程序编写环境准备
Mind
本教程使用的是Mind (V1.7.1 RC2.0)图形化编程环境。
拓展库
拓展库中包含电子模块所用的图形化模块,同时还包含Python人工智能模块。
Mind 上导入拓展库
1、切换到上传模式
进入到Mind ,刚开始的界面是Scratch编程界面,点击上传模式,切换到ArduinoC/MicroPython编程模式,Nano主板只支持ArduinoC编程和Python编程模式。Nano编程使用上传模式。
2、加载拓展库
点击拓展,Nano主板兼容Arduino Uno,点击“拓展”->选择Arduino Uno主控板。选择主控板后,点击用户库,再导入拓展库。
逻辑介绍
重难点解析
1、使用2个子流程来优化逻辑,让子流程只注重单一的功能,类似单例模式。
2、在主流程中设计“重复5~10次掷骰子并振动”,这里谢谢同事发现了这个问题,如果只是“掷骰子并振动”,那么只需要将骰子抬起,随机产生点数6后,在瞬间放下去,就有可能最终的点数是6。
完整程序主程序
骰子显示点数
掷骰子并振动
上传程序
将Nano主板连接到电脑,选择相应的串口,如果没有显示串口,点击“一键安装串口驱动”。点击上传到设备,即可将程序上传到Nano主板。
激光切割模型
将图纸导入后,进行加工。
工具一览
拼接步骤
Step 1、在底板上安装Nano主板、光电传感器、振动马达。
Step 2、将光电传感器连接到P1,振动传感器连接到P3,连接线上有卡口,防止插反。
Step 3、左右两个面板安装在底板上。
Step 4、将点阵屏扣在顶板的内板中,用螺丝固定在外顶板上。
Step 5、将点阵屏连接在P3上。
Step 6、将顶板安装在顶部,同时将左右两块侧板安装在侧面。
Step 7、将四个侧面和底面的外板安装上。
Step 8、连接上电池,等待系统执行程序。
激光切割机使用iLaser,为了更好的外观造型,在设计上,使用了多层结构,让整体层次感更鲜明。硬件与激光切割相结合,使作品有很强的延展力。