19196| 26
|
[项目] GameBuino游戏机制作分享 |
---------------------放图镇楼------------------- ---------------------开场唠叨------------------- 在网上瞎逛的时候偶尔看到了一个项目 叫做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 ------------------接线方法(原理图)----------------------- 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 具体的烧录操作我就不多说了 可以参考社区里的另一个帖子 https://mc.dfrobot.com.cn/thread-10308-1-1.html 顺便说一下,有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上就行 3、还是老生常谈,大家自己研究着玩,不得商用! 欢迎转载,注明出处及作者FishGan就好~ |
522.41 KB, 下载次数: 4255
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed