单片机上的游戏编程——投桃报李

想想那会在学校在proteus上找打一个51单片机的仿真,记得当时做的是万年历,足足高兴了一周。但是,若是想学习在单片机上的游戏编程,这个选择非常不错,逻辑简单,电路清晰,并且直观呀。其中的D3和D4的功能是作为我们游戏机的按键,现在连接了蓝牙模块的引脚。

单片机上的游戏编程——投桃报李

1. 界面演示

Arduino 对 328p 也有很好的支持。 我偶然在论坛上看到一个帖子,其中我使用arduiboy库编写了一个小游戏。 读起来很有趣。 而且连芯片都是一样的,甚至不需要移植。 有328p处理器和OLED12864就可以了。

单片机上的游戏编程——投桃报李

接下来给大家展示一下运行界面,还是蛮有趣的。 想来想去,我在学校找的是Proteus上51单片机的仿真。 记得当时我正在做万年历,我高兴了一个星期。 想想我现在越来越郁闷的心态,我更加怀念大学了。

启动界面===

单片机上的游戏编程——投桃报李

运行界面1===

单片机上的游戏编程——投桃报李

启动界面2===

单片机上的游戏编程——投桃报李

游戏的操作和之前《霸王》上的炸弹人一样。 你控制小人的上、下、左、右方向; 有一个 A 按钮和一个 B 按钮。 A键释放炸弹,B键暂时搁置。 您还可以将此按钮编程为“暂停”或投掷炸弹。 只是游戏难度可能会差一点,没有真正的炸弹人那么有趣。 每一关的通关标准只是杀死一只怪物。 然而,如果你想学习微控制器上的游戏编程,这是一个非常好的选择。 逻辑简单,电路清晰,直观。

节目的评论也很详细:

/*================================================== =========

主菜单

=================================================== =======*/

无效菜单(){

布尔 POA = false;

while (POA == true || KeyBack != 4) {

钥匙();

开关(按键返回){

案例0:

POA = 假;

休息;

情况1:

POA = 真;

休息;

案例4:

如果(POA==真){

键背= 255;

arduboy.clear();

arduboy.setCursor(0, 0);

arduboy.println(F(“ >关于”));

arduboy.println(F(""));

arduboy.println(F("LHW 编程"));

arduboy.println(F("LHW 艺术"));

arduboy.println(F("电子邮件"));

arduboy.println(F(""));

arduboy.println(F(""));

arduboy.println(F("任意键返回…"));

arduboy.display();

延迟(200);

while (KeyBack == 255) key();

延迟(200);

休息;

arduboy.clear();

arduboy.drawSlowXYBitmap(39, 1, START_TITLE, 87, 39, 1); //标题

arduboy.drawSlowXYBitmap(0, 23, TITLE_TNT, 37, 41, 1); //TNT图标

arduboy.drawSlowXYBitmap(65, 58, LHW, 39, 5, 1); //作者信息

arduboy.setCursor(70, 39);

arduboy.println(F("玩"));

arduboy.setCursor(70, 47);

arduboy.println(F("关于"));

if (POA == false) arduboy.setCursor(62, 39); 否则 arduboy.setCursor(62, 47);

arduboy.println(F("*"));

arduboy.display();

2. 电路设置及修改

整个电路的设计基于Arduboy,这是一个开源项目。 该卡的大小仅相当于信用卡的大小。 它配备了经典的8位游戏。 我们可以从官网开源下载相关游戏,编译后下载到我们的板子上。 但请注意,这里的主控是Atmega32U4。 使用我们的DFRobot蓝牙控制器作为主控时,使用我附件中提供的库文件Arduboy2。

具体电路设置可参考Arduboy2文件夹中的电路。 为了您的方便,我将其从所附原理图中单独提取出来。 电路中最重要的是与6个按钮和IIC通信的OLED12864。 无需担心其他晶振电路和复位。 实际使用的电路如下。 需要修改的地方已经用蓝笔画出来了:

单片机上的游戏编程——投桃报李

根据我们的模块,有两个地方需要修改。 D3 和​​ D4 用作游戏机上的按钮,现在连接到蓝牙模块的引脚。 我没试过D3。 D4连接蓝牙模块时,游戏开始时上下按键没有反应。 所以我什么也没做,只是拿起了两个电阻。 但当我们去寻找板上的电阻时,却发现上面没有丝印标记。 这并不难。 将万用表调至蜂鸣器档,然后找到ATMEGA328P的PIN1和PIN32处的电阻,然后打开。 为了安全起见,我只是将上面的两个电阻分开。 我没有直接删除它们,因为我想下次需要时再次连接它们:

单片机上的游戏编程——投桃报李

现在我们只需要添加 OLED 屏幕,然后添加按钮。 我找到了一块过去的穿孔板并做了一个小固定。 是随意焊接的。 虽然有点丑,但是不影响使用。 焊接按钮时需要注意。 焊接完成后,尝试开机。 如果这个时候玩游戏没有问题那就最好了。 否则,将跳线插入 GND 并一路扫描每个引脚以识别按钮。 当然,先参考原理图。

按钮===

单片机上的游戏编程——投桃报李

OLED12864===

单片机上的游戏编程——投桃报李

3. 程序导入与下载

程序下载链接:GITHUB:

首先编译程序,如果没有库文件就会报错。 这不是导入官方的 Arduboy2 库。 Arduboy的介绍提到了上面的注意事项。 这里两者的芯片是不同的。 导入我在这里提供的库。 找到帖子中提到的Arduboy2库,然后将Arduboy2放入你的Arduino IDE的库中。 库的位置允许您查看编译的输出信息。 例如,我的库位置是:C:UsersAdministratorDocumentsArduinolibraries。

单片机上的游戏编程——投桃报李

然后直接打开该工具来设置您的开发板。 这里没有设置为Pro mini,而是设置为nano,8MHZ,3.3V(频率与手册中的数据相同),因为可能存在无法下载的情况,记得检查旧的bootloader然后再下载它。 如果您选择Pro mini,您可以从DFRobot蓝牙控制器网络下载文件,但这里不行。 具体原因我不知道。 不管怎样,经过多次尝试,我觉得这个设置比较靠谱,所以推荐给大家。

单片机上的游戏编程——投桃报李

上传成功===

单片机上的游戏编程——投桃报李

结论:

单片机

3D纳米光基础知识微创与有创现行光学治疗的临床对比

2024-4-24 14:04:03

单片机

单片机课上的系统设计项目,你了解多少?

2024-4-24 15:06:03

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索