基于mixly的数字骰子

作者: hznupeter | 来源:发表于2018-02-16 15:07 被阅读54次

创意来源

小朋友玩游戏中经常会需要用到游戏骰子,当骰子抛出之后,随着骰子的旋转最后会停在某个点数。有些同学为了掷出较大的点数,会故意将大点数提前朝上,在掷出的时候做一个假动作,希望能让骰子停留在大点数。
针对这样的情况,我就想能否制作一个没法作弊的电子骰子呢?借助于arduino硬件和mixly我设计了一款电子骰子,与大家分享制作过程与方法。

材料准备

名称 功能
Arduino Nano主控 数字骰子主控
MAX7219 8*8点阵屏 用于显示点数
震动开关 骰子变化点数的触发装置
10k电阻 下拉电阻
tp4056充电模块 充电并防止锂电池过充
3.7V 80mah锂电池 为数字骰子供电
三脚小开关 总电源

作品构思

利用3DOne设计一个正方体外壳,将8*8点阵屏装在其中一面,用于显示掷得点数。用震动开关作为骰子的触发装置,当数字骰子被晃动时,就产生一个随机数,并将点数在点阵屏上显示。

硬件连接

硬件管脚 Arduino Nano管脚
震动开关 D2
点阵屏DIN管脚 D10
点阵屏CS管脚 D11
点阵屏CLK管脚 D12

程序编写

本作品的程序是基于mixly编写的,mixly适合初学者使用,大大降低了arduino学习难度。本作品在开发中还使用到了mixly著名的第三方库——17maker(该库的安装和使用可以扫描下方二维码查看)。


二维码

随机数的产生


当接在D2管脚的震动开关被晃动时,开关触发,D2口变成高电平,就会产生一个1-6的随机数,并将该随机数赋值给变量displayNum。

点阵屏显示点数

产生随机数后,就可以将一个随机的点数显示在点阵屏上,17maker库中提供了友好的点阵屏控制图形程序。比如要在点阵屏上显示“一点”,可以用以下程序。
在点阵图案中通过打钩的方式确定要点亮的二极管。如“一点”的图案变量定义为num1,勾选最中间的四个点,显示效果如图所示。

编写程序
显示效果

为了利用点阵屏显示6种点,需要创建6个图案变量,具体图案如下表。

将震动开关产生随机数和点阵屏随机显示相结合的程序如下,该程序已经可以实现数字骰子的基本功能了。当震动开关被晃动时,点阵屏立刻显示一个随机点数,再次晃动,则会换一个点数。


功能提升

程序功能虽然已经基本实现,但是这个点数的出现没有任何悬念,晃动之后直接就出现。那么,怎么样才能让点数的出现有一点悬念呢?
我们可以通过点数不断变化,最终停留在某一个点数的方式来提高仿真度,并且还在停留在最后一个点之前放慢切换速度,营造紧张氛围。那程序该如何修改呢?
首先创建变量delaytime用于改变点数切换的速度,初始值为50(ms);创建变量currentNum用于记录当前显示的点数,初始值为0。



当震动开关被晃动时,首先产生一个30-36之间的随机数,该随机数表示点阵屏上的点数需要切换这么多次数才会停止。
当点阵屏上的点数开始切换时,首先判断displayNum是否大于currentNum,如果满足大于的条件,就进入点阵屏切换的程序。那么在切换之前,用currentNum除以6取余数的方法来确定该显示第几个图案。使用取余除法的目的是为了应对currentNum大于6的情况。这段程序需要好好理解一下哦!
随着点数的跳动,如何让点数在最后几次跳动时放慢速度呢?
放慢速度显然可以使用增加延时的方法,那么在程序的最后,我们可以加上这样一段,来控制延长最后5次跳动的延时。



当跳动到最后五次的时候,延时的时间比前一次延时多100毫秒,以此模拟跳到最后越来越慢的景象。
上传程序并连接好电路,测试一下吧,看看是否已经可以实现功能啦。

模型设计

利用3Done设计一个正方体外壳,将所有的元器件都放到这个外壳中,根据元器件的尺寸,我设计了一个棱长为60mm的立方体。
具体如下:



模型正面效果图,正面镶嵌一块8*8点阵屏,没有其他多余的东西,干净整洁。



模型的底部再开一个口,为充电和开关预留位置。两个模块之前通过卡扣固定,方便安装拆卸。

模型分开之后,其实各占六面体的三个面。在设计的过程中,两个模块之前不能贴合太紧,要留一定的空隙,不然打印出来有可能会太紧。

电路连接


充电模块与电池相连,将电池的正负极分别接在充电模块的B+和B-处。Tp4056充电模块可以很好地保护电池,防止过充。80MAH的小型锂电池在制作小作品时非常实用,身材小巧,适宜于安装在狭小空间中。


a面 b面 c面

在arduino Nano上安装触发用的震动开关。将震动开关接在D2端口上,此处要跟程序中的端口定义相对应哦。为了电平的稳定,在震动开关边上还需要接一个下拉电阻,接线图如下图所示。




电池模块与主控连接。用黑导线从充电模块的OUT-引出,接到arduino Nano的GND管脚。用红导线从充电模块的OUT+引出,先经过一个三脚开关,再接到arduino Nano的VIN管脚,给主控供电。接好导线后,可以拨动开关测试,观察arduino Nano是否通电正常。



根据程序定义,将MAX7219点阵屏连接到arduino Nano上的10~12管脚。最后将充电模块,点阵屏,主控这三个部分用热熔胶粘在模型的适当部分。
a面 b面 c面

测试效果,打开电源,晃动数字骰子,点阵屏上会随机闪烁点数,并最终停在某一个点数。到这里,一个有趣的数字骰子就完成了。有了这个数字骰子,就再也不怕有人耍小聪明了。

(本文发表于《无线电》2017年9月刊)

相关文章

  • 基于mixly的数字骰子

    创意来源 小朋友玩游戏中经常会需要用到游戏骰子,当骰子抛出之后,随着骰子的旋转最后会停在某个点数。有些同学为了掷出...

  • 《门铃》

    一、教学目标 知识与技能 1.掌握mixly中程序分支结构;2.理解mixly中的数字输入;3.理解门铃的工作原理...

  • 和12岁小同志搞创客开发:手撕代码,做一款数字骰子

    小时候都玩过飞行棋吧,是不是特别喜欢掷骰子,今天就要通过Arduino来做个数字骰子。 如何实现数字骰子效果呢?其...

  • 2016年Java方向C组第四题

    骰子游戏 我们来玩一个游戏。同时掷出3个普通骰子(6个面上的数字分别是1~6)。如果其中一个骰子上的数字等于另外两...

  • 活动4:Mixly与Arduino编程

    米斯奇(Mixly)部分 03、04组(B):任务1:分支结构、循环结构、数字输入输出06、18组(B):任务2:...

  • 输得起

    和狗蛋玩扔骰子走棋的游戏。有熊大、熊二、光头强的角色,扔骰子,骰子正上面的数字是几,就走几步棋。 狗蛋是大孩子了,...

  • 什么是Mixly编程?什么是Arduino UNO?什么是Ard

    今天一同学问什么是Mixly编程?什么是Arduino UNO?什么是Arduino IDE?了解Mixly编程之...

  • 投机笔记:DICE挖矿

    BETDICE是基于EOS的骰子游戏,简单粗暴。 它的设计非常简单,基于EOS让它使用起来也非常顺滑。 现在基于E...

  • Mixly安装教程

    1、解压Mixly0.999_WIN.zip 2、将解压后的文件夹放入D盘,并将mixly.exe 发送到桌面快捷...

  • 学习力践行20170714/D12

    1. 路上招牌认字,读“33度婴儿游泳拓展馆,读了“咚咚,搭积木”; 2. 扔骰子加数字,从0-9的转盘,骰子先只...

网友评论

    本文标题:基于mixly的数字骰子

    本文链接:https://www.haomeiwen.com/subject/ejjptftx.html