你的无限手套还缺一点,就能打响指
*项目作者:FishGan
www.dfrobot.com.cn
在网上瞎逛的时候偶尔看到了一个项目叫做GameBuino,在百度上搜索一下,发现有不少人做过但是都缺乏详细的过程和指南自己尝试制作也遇到了各种问题果断科学上网用谷歌,还算顺利地解决了特别在此把完整的过程和资料分享出来!
材料准备
Arduino Nano 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
接线方法(原理图)
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多字的焊接布线返工过程差不多做完就是酱紫的。
BootLoader烧写
这是一个非常隐蔽的坑,我折腾好久才发现这个坑GameBuino需要用自己的BootLoader,而不是Arduino的默认BootLoader但是不要担心,GameBuino的BootLoader仍然支持ArduinoIDE直接从串口烧写程序
事实上各种游戏也可以通过这种方法加载进去好了来讲一下具体操作方法下载后面的附件,解压以后,有一个叫gamebuino_boot的文件夹
将整个文件夹复制到Arduino安装目录/hardware/arduino/avr/bootloaders路径下。
如下图所示:
如果是Arduino1.0.5的用户,我建议升级环境实在不想升级的话。。路径稍微有点不一样,自己找一下吧反正让这个文件夹和别的BootLoader排排坐放一起然后打开上一级目录下的boards.txt文件,在文件末尾加入以下代码并保存。
然后就可以打开ArduinoIDE,你会发现你的开发板选项里多了GameBuino。
然后选择这个板卡,并选择烧录BootLoader,具体的烧录操作我就不多说了可以参考社区里的另一个帖子(用arduino作AVR ISP——烧bootloader:http://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=10308)
顺便说一下,有USBASP的小伙伴也可以用的~
烧好bootLoader以后,把附件里Gamebuino-Games-Compilation文件夹里的内容复制到SD卡之中。注意是内容直接复制,不要保留文件夹。
然后就可以上电啦~不出意外的话,就可以看到和我一样的界面了。
然后就愉快的摸索吧~
反正玩崩了重新烧一遍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上就行。

点击文末"阅读原文",右侧就是“心愿单”啦!
*欢迎转发朋友圈。如需转载,请注明出处和原作者。产品不得商用。
项目干货戳这里
MIDI控制自动弹钢琴 | mini热带温室 | 无线蓝牙机械键盘
吃币机器人 | 骨骼追踪抛物预判垃圾桶 | 弹球机

点击“阅读原文”,至文末下载代码。

