基于Arduino制作点阵随机骰子 材料准备
硬件连接 硬件管脚 Arduino
Nano管脚 震动开关D0 <------> D4 点阵屏DIN管脚 <------> D8 点阵屏CS管脚 <------> D9 点阵屏CLK管脚 <------> D10 震动传感器信号 通过串口监视器显示,发现震动传感器在震动时,发出的信号为1,即高电平,而没有震动时,信号为0,低电平。 (串口打印程序) 随机数的产生
当接在D4管脚的震动开关被晃动时,开关触发,D4口变成高电平,就会产生一个1-7的随机数,并将该随机数赋值给变量item。 (设置随机数) 这样,当item值为1时,可以让点阵显示1的图案(点阵程序还未编写),这个点数的出现没有任何悬念,晃动之后直接就出现,为了让骰子出现点数时,有悬念感,所以要继续对随机产生的点数进行程序修改。
(点数切换) 当点阵屏上的点数开始切换时,首先判断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毫秒,以此模拟跳到最后越来越慢的景象。 (跳动倒计时) 总程序 (随机骰子总程序) |