找回密码
 立即注册

QQ登录

只需一步,快速开始

星原力教育科技 首页 创客工坊 查看内容

基于Arduino制作点阵随机骰子

2020-5-8 16:56| 发布者: lou| 查看: 538| 评论: 1

摘要: 基于Arduino的随机骰子借助于arduino硬件和mixly设计一个电子随机骰子 材料准备 名称 功能 Arduino Nano主控 随机骰子主控 MAX7219 8*8点阵屏 用于显示点数 震动开关 骰子变化点数的触发装置 ...

基于Arduino制作点阵随机骰子




材料准备


  • Arduino Nano控制器
  • MAX7219 8*8点阵屏
  • 震动开关 
  • 9V充电锂电池
  • 船型开关 
  • 面包板 


硬件连接


            硬件管脚                                                    Arduino Nano管脚

         震动开关D0                            <------>                      D4

       点阵屏DIN管脚                          <------>                     D8

        点阵屏CS管脚                           <------>                     D9

       点阵屏CLK管脚                          <------>                     D10


震动传感器信号


通过串口监视器显示,发现震动传感器在震动时,发出的信号为1,即高电平,而没有震动时,信号为0,低电平。


(串口打印程序)


随机数的产生


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


(设置随机数)


这样,当item值为1时,可以让点阵显示1的图案(点阵程序还未编写),这个点数的出现没有任何悬念,晃动之后直接就出现,为了让骰子出现点数时,有悬念感,所以要继续对随机产生的点数进行程序修改。

  1. 首先创建变量time用于改变点数切换的速度,初始值为50(ms)
  2. 创建变量T用于记录当前显示的点数,初始值为0
  3. 当震动开关被晃动时,首先产生一个30-36之间的随机数,该随机数表示点阵屏上的点数需要切换这么多次数才会停止。


(点数切换)


当点阵屏上的点数开始切换时,首先判断item是否大于T,如果满足大于的条件,就进入点阵屏切换的程序。那么在切换之前,用T除以6取余数的方法来确定该显示第几个图案。使用取余除法的目的是为了应对T大于6的情况。


(求余数确定点数)


T%6=1时,可以设置点阵图案为1,同理,T%6=2时,设置点阵图案为2


点阵屏显示点数


软件中提供了Max7219点阵屏库,从中先对点阵屏进行初始化模块设置,初始模块中的管脚即对应实际连接的管脚,同时,也可调节点阵屏的亮度,将点阵亮度设为5,水平点阵屏数为4,即4个水平连接的点阵屏,竖直点阵屏数还是为1


(点阵屏初始化)


点阵图案中通过打钩的方式确定要点亮的二极管,注意,不同的点阵图案,变量名要不一样。因为骰子是由4块点阵连接起来,所以还需要对点阵屏设置旋转角度,已方便后续设计图案。


4块点阵屏旋转角度更改)


四个点阵连起来设计图案,屏幕序号,即连接的序号,不要搞混,使用函数将点阵图案分别打包。


(点阵图案点数1


把各点阵点数图案放入对应程序中,如T%6=1时,显示图案点数1


(程序完善)


点数在最后的几秒跳动时间变慢,即切换速度变慢,放慢速度可以使用增加延时的方法,在程序的最后,添加一段控制延长最后5次跳动的延时。

倒计时跳动次数可进行更改。当跳动到最后五次的时候,延时的时间比前一次延时多100毫秒,以此模拟跳到最后越来越慢的景象。


(跳动倒计时)


总程序


(随机骰子总程序)




鲜花
鲜花 (6)
握手
握手
雷人
雷人
路过
路过
鸡蛋
鸡蛋

刚表态过的朋友 (6 人)