概述
完善游戏机,实现储存最高纪录的功能。
模块清单
模块
其他设备
- USB数据线*1
- 传感器连接线*4
- 传感器外壳
- 乐高或其它固定结构
模块搭建
搭建
- 将模块和传感器组装起来:
- 将红色的核心模块,电池底座、OLED与绿色的扩展模块吸在一起;
- 将蜂鸣器连接在Hub的8/9管脚;
- 将旋转电位计连接在Hub的A0管脚;
- 将全彩LED连接在Hub的6/7管脚;
- 将摇杆连接在Hub的A2管脚。
- 将USB连接线一端插入电池底座,另一端连接电脑。
编程
编程思路
其他程序思路与上堂课一样,需要加上最高纪录的存储和比较程序。游戏开始时显示最高纪录,当游戏结束后,判断是否打破最高纪录,如果是则更新最高纪录。
使用的程序块
开始编程
1、声明变量,存储数据
top变量用来储存最高纪录。
2、 初始化函数
初始化函数改为:将EEPROM地址0中的值存入top。将top显示到OLED。
3、win函数
win函数内容改为:
如果分数达到15,则将完成时间time和最高纪录top进行对比,如果time小于top(破纪录),则OLED屏幕显示“you are best”和成绩。
将time存入EEPROM的0地址中(刷新纪录),并播放音乐庆祝。
否则只显示成绩、绿灯亮1秒。
4、start函数无更改。
5、display函数无更改。
6、BINGO函数无更改。
7、time_out函数无更改。
测试结果
上传成功后,OLED显示本机最高纪录,按下摇杆后游戏开始,OLED第一行显示随机数每隔3秒变一次,第二行显示“1 2 3 4 5 6”, 第三行显示SCORE:0。旋转电位计“1 2 3 4 5 6”移动,当对齐一段时间后才得分,第三行的显示得分会改变,当得分超过15时,如果用时更短(破纪录)则OLED屏幕显示“you are best”和成绩,并播放音乐庆祝,否则只显示成绩、绿灯亮1秒。等待摇杆按下重新开始游戏。
Q:EEPROM里的我们存储最高纪录的地址中,可能有很久以前存入的数据,我们还需要在游戏中直接清除最高纪录的功能。
A:我们可以写入一个时间比较大的值,替换时间最少的就可以。
其他程序思路与一样Bingo 04一样,需要加上清除最高纪录的程序。
增加clear函数
如果摇杆左摇,在EEPROM的0地址中写入99(99秒,极慢的纪录。如果把纪录写为0,那么将再也不会被打破),在OLED屏幕上显示“clear top”, 蓝灯点亮1秒
执行函数。
技术规范
相关案例
Q&A
|