【项目来源】
世界上第一台商业老虎/机诞生于 1895 年,它是一种用零钱赌博的机器,在酒吧、赌场、游戏厅,甚至一些零售店里都能见到它的身影。然而赌博诸多害处我们并不提倡,但通过智慧的头脑和灵巧的双手 DIY 一台老虎/机倒是一个不错的主意。寒假在即,过年也离我们不远了。快做一台和小伙伴一起玩儿吧,让你们的聚会活动更有趣~
【效果演示】
【项目分析】
经典老虎/机有三个滚动轮,每个轮上会滚动出现一系列数字或图案。当滚轮停止时,三个数字或图案一致则获胜。
DIY 的时候需要考虑图案的呈现方式。机械装置做起来比较麻烦,我们可以用屏幕来显示不同的数字或图案。考虑到展示效果及趣味性,屏幕越大越好。而徽章板刚好满足这一条件,屏幕大,显示效果好。另外徽章板本身就是一个主控器,通过编写代码就能实现一些简单的功能。
老虎/机的核心功能就是显示不同的图案。为了方便起见,我们选择显示数字。我们做一个显示三位数字的简易老虎/机。整体的流程如下:
1.通过按键触发老虎/机,开始滚动显示数字。
2.在屏幕左中右分别显示一个 0 到 9 之间的随机数。
3.若干时间后停止滚动,显示最终呈现的数字。
4.比较停留下来的三个数字是否一致,判断输赢。
步骤1 器材连接
通过分析,我们需要用到一个按键开关。不过我不喜欢按键的机械声,就选择了数字触摸开关。将徽章板插到扩展板上,然后将数字触摸开关接到扩展板的 D0 接口即可。
步骤2 编写代码
打开 http://haohaodada.com/hz 或者好搭 Block 软件编写代码如下:
因为最后要进行输赢判定,所以程序中创建了三个整型变量存放每个数字。考虑到游戏难度较大,可以修改数字的范围降低难度。如这里就把随机数范围[0,9]改为[1,3]。
步骤3 调试运行
将编写好的代码上传到徽章板,取下数据线,打开徽章板电源。按键测试老虎/机功能是否正常。
依据实际效果修改停顿的时间间隔,优化用户体验。
#include "Haoda.h"
#include "Arduino.h"
#include "Wire.h"
#include "Servo.h"
int my_1;
int my_2;
int my_3;
uint16_t displaycache[500];
void setup()
{
my_1 = 0;
my_2 = 0;
my_3 = 0;
BadgeDisplay_Init();
BadgeDisplay_Clear_Screen();
BadgeDisplay_Clear_Screen();
pinMode(6,INPUT);
}
void loop()
{
BadgeDisplay_hzs("按键开始",0);
if(digitalRead(6)){
BadgeDisplay_Clear_Screen();
for(int i=0;i<int(random(5, 20+1));i++){
my_1 = random(1, 3+1);
my_2 = random(1, 3+1);
my_3 = random(1, 3+1);
BadgeDisplay_printText(displaycache,String(my_1),10);
BadgeDisplay_printText(displaycache,String(my_2),20);
BadgeDisplay_printText(displaycache,String(my_3),30);
BadgeDisplay_Display_buf(displaycache,40,0.2);
delay(200);
}
delay(2000);
BadgeDisplay_Clear_Screen();
if((my_1 == my_2) && (my_2 == my_3)){
BadgeDisplay_hzs("你赢了!");
}
else{
BadgeDisplay_hzs("你输了!");
}
delay(2000);
BadgeDisplay_Clear_Screen();
}
}
评论