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蓝牙控制器网络下载文件,但这里不行。 具体原因我不知道。 不管怎样,经过多次尝试,我觉得这个设置比较靠谱,所以推荐给大家。
上传成功===
结论: