2018-12-30 12:43:38 [显示全部楼层]
14876浏览
查看: 14876|回复: 26

[项目] GameBuino游戏机制作分享

[复制链接]
---------------------放图镇楼-------------------
GameBuino游戏机制作分享图4
---------------------开场唠叨-------------------
在网上瞎逛的时候偶尔看到了一个项目
叫做GameBuino
在百度上搜索一下,发现有不少人做过
但是都缺乏详细的过程和指南
自己尝试制作也遇到了各种问题果断科学上网用谷歌,还算顺利地解决了
特别在此把完整的过程和资料分享出来

---------------------材料准备-------------------

ArduinoNano                 x1
15pin排母                       x2
Nokia5110液晶屏           x1
SD(或者TF)卡模块       x1
2G或以下容量SD/TF卡    x1
按键&按键帽                   x7
蜂鸣器(或者小喇叭)     x1
NPN型三极管                  x1
1K电阻                            x4
510Ω电阻                        x3
光敏电阻                          x1
100K电阻                         x1
1N4148二极管                 x1
洞洞板                              x1
电源插座                          x1
导线若干

说明:(红字是关键,别的没兴趣看就略过吧)
1、原设计使用的是ATMega328P-AU,也就是Arduino Nano同款处理器,而Arduino UNO使用的是ATMega328P-PU
这里要说一个很坑的地方,328P的AU和PU除了封装不同以外(一个贴片,一个直插),功能上也有差异
具体来说,AU多了A6和A7这两个通道,但是这俩通道只能作为模拟输入,并没有数字输入/输出功能
由于在GameBuino里面,使用到了A7通道,因此必须要使用Nano
但是UNO也不是不可以,需要修改BootLoader的源码并重新编译

2、建议使用洞洞板制作,一方面是nano的5V和GND引脚不太够用
另一方面是电路有点复杂,如果用杜邦线到处飞线真的是惨不忍睹
别问我怎么知道的,我才不会说我这么干了然后放弃了

3、整体的布局和使用的按键大小大家可以根据自己的喜好来
在我的设计中,方向键和AB键是常用的游戏操作按键,因此使用了12*12的按键并配以按键帽
而C键是功能按键,在正常游戏过程中使用度不高,为避免误按我使用了6*6的小按键并且藏在了不太容易按得到的位置

4、程序会生成音频信号的,因此可以用无源扬声器(也就是普通的小喇叭)
建议用16欧姆或者更高阻抗的,阻抗太小的话,工作电流太大,就需要配更大的三极管
而且如果布线不好的话,可能引入较大电源噪声导致处理器工作不稳定
如果一定要用小阻抗的,可以串联一个电阻
当然也可以直接用蜂鸣器,就是出来的声音总有些奇怪,不如小喇叭好

5、NPN三极管随意选择,8050,9013一类的都行,只要集电极电流大于喇叭需要的电流就行
(大不了管子冒烟了再换个大点的就是了哈哈哈哈)

6、由于Arduino读取存储卡的限制,最大只支持2G的卡,而且需要将存储卡格式化为FAT格式才行。

7、电源插座自己可以随意选择,我用的是XH2.54插座,用DC或者别的插座也行的。
由于我没有板载稳压器,因此输入电压必须是5V
而Arduino板载的稳压器电流有点小,不一定带的动扬声器
如果不方便使用5V电源(例如只有2S或者3S锂电池环境)
可以自己在洞洞板上加一片7805(记得加电容哦),这样就可以使用比较高电压的外部电源了~

8、如果仔细看了我的图,会发现我用了16pin排母
因为刚好15pin的用完了Orz
用16pin的话一定要当心不要插错位置
如果插错。。恭喜你,Arduino冒烟成就+1

------------------接线方法(原理图)-----------------------
GameBuino游戏机制作分享图7
1、5110液晶屏和SD卡都是使用SPI总线的,共用SCK,MISO,MOSI这三个引脚
2、存储卡是工作在3.3V的,所以从单片机输出的信号必须经过分压才可以接至存储卡,否则会有损坏存储卡的风险
3、给SD卡分压的两个电阻,阻值不必拘泥于我给的数值,只要是能够将5V分压到3.3V左右的都行(实际只要小于3.6就行)
例如,1K和2K组合,5.1K和10K组合等等(就是大约1:2的阻值比)
两者的和不要太大或者太小,在几十K到几K的范围内都行
4、有一些SD卡模块,已经自带分压功能了(例如DF商城里的那款),那就不需要分压电阻了~
只需要把引脚接到对应IO上就行,也可以使用5V供电
图上的电路是我实际用的,并没有分压,因此必须外接电阻,而且供电电压必须是3.3V
因此使用前请务必确认好,以免导致sd卡烧毁或者电压过低工作不正常
5、如果使用小喇叭,必须接二极管,用蜂鸣器则不需要
在图上两种电路我都画了,二选一即可
此处省略n多字的焊接布线返工过程
差不多做完就是酱紫的
GameBuino游戏机制作分享图5
GameBuino游戏机制作分享图6


----------BootLoader烧写---------------
这是一个非常隐蔽的坑,我折腾好久才发现这个坑GameBuino需要用自己的BootLoader,而不是Arduino的默认BootLoader但是不要担心,GameBuino的BootLoader仍然支持ArduinoIDE直接从串口烧写程序
事实上各种游戏也可以通过这种方法加载进去
好了来讲一下具体操作方法下载后面的附件,解压以后,有一个叫gamebuino_boot的文件夹
将整个文件夹复制到Arduino安装目录/hardware/arduino/avr/bootloaders路径下
如下图所示
GameBuino游戏机制作分享图1
哦如果是Arduino1.0.5的用户,我建议升级环境
实在不想升级的话。。路径稍微有点不一样,自己找一下吧
反正让这个文件夹和别的BootLoader排排坐放一起

然后打开上一级目录下的boards.txt文件,在文件末尾加入以下代码并保存
  1. gamebuino.name=Gamebuino
  2. gamebuino.upload.protocol=arduino
  3. gamebuino.upload.maximum_size=30592
  4. gamebuino.upload.speed=115200
  5. gamebuino.bootloader.tool=avrdude
  6. gamebuino.bootloader.low_fuses=0xff
  7. gamebuino.bootloader.high_fuses=0xda
  8. gamebuino.bootloader.extended_fuses=0x05
  9. gamebuino.bootloader.file=gamebuino_boot/gamebuino_boot.hex
  10. gamebuino.bootloader.unlock_bits=0x3F
  11. gamebuino.bootloader.lock_bits=0x0F
  12. gamebuino.build.mcu=atmega328p
  13. gamebuino.build.f_cpu=16000000L
  14. gamebuino.build.core=arduino
  15. gamebuino.build.variant=standard
复制代码

然后就可以打开ArduinoIDE,你会发现你的开发板选项里多了GameBuino
GameBuino游戏机制作分享图2
然后选择这个板卡,并选择烧录BootLoader
具体的烧录操作我就不多说了
可以参考社区里的另一个帖子
https://mc.dfrobot.com.cn/thread-10308-1-1.html
顺便说一下,有USBASP的小伙伴也可以用的~

烧好bootLoader以后,把附件里Gamebuino-Games-Compilation文件夹里的内容复制到SD卡之中
注意是内容直接复制,不要保留文件夹
然后就可以上电啦~不出意外的话,就可以看到和我一样的界面了
GameBuino游戏机制作分享图3
然后就愉快的摸索吧~
反正玩崩了重新烧一遍BootLoader,重新格式化一遍SD卡就是了

------------------------游戏开发环境准备----------------------
当然啦,爱折腾的小伙伴们肯定不满足于这么点游戏
GameBuino提供了库可以自己开发游戏
开发好的游戏,可以直接用串口烧录到板卡上
也可以将编译出来的hex文件放到sd卡上然后运行
具体的库也在附件里,Gamebuino_Classic.zip文件,无需解压
直接在ArduinoIDE里,项目---加载库----添加zip库
然后选择这个文件就行了~
剩下的自行摸索吧hhhhh
顺便说一下,在GameBuino社区里,能找到不少游戏源码
但是注意一下,我们这款是Classic,不是META
META是基于Arduino DUE同款处理器的,硬件上有很大不同
我正在研究自制META,大家期待一下我下一篇帖子吧~

-------------------一些其他说明---------------------
1、关于BootLoader工作原理的说明
这个专用的BootLoader实际上是在Arduino本来的BootLoader上增加了一个SD卡读取的功能
并且提供了一个选择游戏的界面
当你选择了一个游戏之后,BootLoader会将SD卡中对应的hex文件烧写进Flash之中,然后执行
因此通过ArduinoIDE也能直接烧写游戏进去,和从SD卡加载并无差别的
2、我给本项目做了心愿单了,大家可以直接愉快的去买买买了!
需要说一下,DF的商城里没有Nokia 5110屏幕,自行淘宝解决吧
心愿单里的喇叭也是自带功放了,就不需要用三极管了~直接把信号线接到D3上就行
3、还是老生常谈,大家自己研究着玩,不得商用!
欢迎转载,注明出处及作者FishGan就好~

gamebuino资料包.rar

522.41 KB, 下载次数: 628

FishGan  高级技师
 楼主|

发表于 2020-3-8 10:28:50

醉家男煮饺 发表于 2020-3-6 18:27
弱弱的问一句 Arduino pro micro 可以做吗?谢谢

pro micro是 ATMega32U4的,并不能直接用,要重新自己编译bootloader
并且需要对应修改board.txt里面的配置来适配32U4
如果是pro mini是可以直接用的
基于32U4的,有个项目叫Arduboy,可以去了解下看看
都是开源的,自己按照原理图接线然后烧写程序
回复

使用道具 举报

FishGan  高级技师
 楼主|

发表于 2021-3-15 16:27:13

DFrJNpgaKQ_ 发表于 2021-3-13 20:19
为什么我,烧录引导程序的时候,总是出错,缺少bootloder.tool

这个Windows要背锅,是文件编码的关系。如果你用的Windows自带的文本编辑器,另存为一下,编码格式选UTF-8,然后用另存出来UTF-8编码的文件替换掉就行了。
回复

使用道具 举报

醉家男煮饺  学徒

发表于 2020-3-9 23:09:43

FishGan 发表于 2020-3-8 10:28
pro micro是 ATMega32U4的,并不能直接用,要重新自己编译bootloader
并且需要对应修改board.txt里面的配 ...

谢谢您详细的回复,我最近还真做了个arduboy,买了两个 arduino pro micro,所以看到您这个想起了还有个吃灰的 5110
回复

使用道具 举报

bum1AMmm  学徒

发表于 2019-1-2 09:59:46

很好非常好很好非常好很好非常好很好非常好很好非常好很好非常好很好非常好很好非常好很好非常好很好非常好很好非常好很好非常好很好非常好
回复

使用道具 举报

gray6666  初级技神 来自手机

发表于 2019-1-2 21:47:17

FishGan 发表于 2018-12-30 12:43
---------------------放图镇楼-------------------

---------------------开场唠叨-------------------

赞。。。。。。。。。。。。
回复

使用道具 举报

laai  初级技师

发表于 2019-1-3 15:22:37

是能玩游戏吗?如有视频就好了
回复

使用道具 举报

FishGan  高级技师
 楼主|

发表于 2019-1-4 18:28:57

laai 发表于 2019-1-3 15:22
是能玩游戏吗?如有视频就好了

是能玩的,社区里有不少现成的,流畅性什么的都很不错。也可以自己开发,就是Arduino环境。视频的话,我稍后补一个~我的资料包里,就有15个游戏可以玩
回复

使用道具 举报

阿泰  学徒

发表于 2019-2-19 16:57:51

想请教一下 meta怎么制作?有教程放出吗:lol
回复

使用道具 举报

阿泰  学徒

发表于 2019-2-20 08:38:05

您好 请问什么时候放meta的教程 期待
回复

使用道具 举报

zzh2  学徒

发表于 2019-5-22 20:46:22

更改board.txt的时候,放在最后面直接报错“Error reading file (E:\work\新建文件夹\arduino-1.8.9\hardware\arduino\avr\boards.txt:0): Invalid line format, should be 'key=value'”,放在前面的时候就在烧写进板子的时候报错。怎么搞
回复

使用道具 举报

白舅  学徒

发表于 2019-7-3 11:21:10

我为什么不能下载文件?我等级太低?
回复

使用道具 举报

绝地智者  见习技师

发表于 2019-7-19 22:03:18

我为什么不能下载文件?我等级太低?
回复

使用道具 举报

373316737  见习技师

发表于 2019-7-21 17:40:25

很好



回复

使用道具 举报

熹宝快睡觉  见习技师

发表于 2019-8-8 16:40:04

非常的好  赞赞赞
回复

使用道具 举报

春风化雨  见习技师

发表于 2019-8-30 23:08:03

很好非常好
回复

使用道具 举报

zi_dan233  学徒

发表于 2019-9-15 18:25:42

66666
回复

使用道具 举报

FishGan  高级技师
 楼主|

发表于 2019-12-23 16:12:15

zzh2 发表于 2019-5-22 20:46
更改board.txt的时候,放在最后面直接报错“Error reading file (E:\work\新建文件夹\arduino-1.8.9\hardwa ...

可能是编码的问题。。
在保存的时候,把文件另存为UTF-8编码格式试试看
回复

使用道具 举报

txm派瑞深山锹  高级技师 来自手机

发表于 2020-2-13 16:38:01

FishGan 发表于 2018-12-30 12:43
---------------------放图镇楼-------------------

---------------------开场唠叨-------------------

好贴,学到了
回复

使用道具 举报

醉家男煮饺  学徒

发表于 2020-3-6 18:27:34

弱弱的问一句 Arduino pro micro 可以做吗?谢谢
回复

使用道具 举报

沈树羊  学徒

发表于 2020-5-6 20:17:15

心愿单没有了...
回复

使用道具 举报

FishGan  高级技师
 楼主|

发表于 2020-5-7 10:43:23


我重新做了个放上来了~
5110液晶屏要自己淘宝买一个,DF的商城里没有
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail