玩魂斗罗怎么能少了Arduino游戏手柄!

您所在的位置:网站首页 游戏手柄按键说明图魂斗罗 玩魂斗罗怎么能少了Arduino游戏手柄!

玩魂斗罗怎么能少了Arduino游戏手柄!

2023-07-16 04:44| 来源: 网络整理| 查看: 265

玩魂斗罗怎么能少了Arduino游戏手柄! 1.硬件准备1.1模块介绍1.2接线方式 2.软件编程2.1 下载库文件2.2 安装库文件2.3编写程序 3.测试手柄4.魂斗罗游戏5.设置游戏手柄 清明时节雨纷纷, 小编邀你打游戏, 没有手柄怎么办? 小编带你做一个! ——小编的《饭制·清明·打油诗》 清明节假期可不能荒废,今天小编就跟大家分享如何使用Arduino制作一个游戏手柄,然后再玩几把经典的魂斗罗游戏

在这里插入图片描述

视频链接: https://b23.tv/xm54U6

1.硬件准备 1.1模块介绍

要制作游戏手柄肯定要有个摇杆,然后再加个大按键模块,如图所示: 在这里插入图片描述

最重要还是要有个主控,今天我们需要的主控就不是Arduino UNO了,而是Arduino Leonardo。

Arduino Leonardo是基于ATmega32u4的开源电子板,它也有20个输入/输出引脚,包括013引脚和A0A5引脚,用法和Arduino UNO基本一样,但是与Arduino UNO又有所不同,它直接使用了ATmega32u4的USB通信功能,取消了USB转UART芯片,这使得Leonardo不仅可以作为一个虚拟的串行端口,还可以作为鼠标或者键盘连接到计算机。 你好! 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

1.2接线方式

在这里插入图片描述 注意:Leonardo板子上只有一个+5V端口,但是大按键模块和摇杆都需要+5V端口,本着能不增加模块就不增加模块的原则,小编直接借用了板子上ICSP的+5V引脚和GND引脚给按键模块供电

2.软件编程 2.1 下载库文件

要把Leonardo变成游戏手柄还需要安装一个Joystick库文件,小编使用的是https://github.com/MHeironimus/ArduinoJoystickLibrary的Joystick库,如果github上下载比较慢,可以关注小编公众号,后台回复"游戏手柄"就可以获取全部资料了

2.2 安装库文件

解压下载后的Joystick库文件,然后把解压后的文件剪切到ArduinoIDE安装目录下的libraries文件夹内,如图所示: 在这里插入图片描述

2.3编写程序

程序部分就比较简单了,先导入Joystick库,创建Joystick对象,并设置好按键的个数和摇杆的X、Y轴;然后在setup()函数中初始化按键的引脚,并且让Leonardo连接到计算机的游戏控制器;在主循环loop()函数中分别获取按键的状态和摇杆X轴和Y轴的值。

需要注意的是获取按键时要考虑去抖动的问题,程序中用到了lastButtonState数组保存上次按键的状态,当按键的本次状态和上次保存的状态不一样的时候才会调用Joystick库中的setButton函数设置按键的状态,在Joystick库中setButton中的按键编号是从0开始的;

//获取按键状态,按下为1,松开为0,有防抖功能 for (int index = 0; index //Serial.println(currentButtonState); //设置手柄按键,参数1表示按键的地址,参数2为按键的状态 Joystick.setButton(index, currentButtonState);//设置手柄的按键 lastButtonState[index] = currentButtonState;//保存按键的状态 } }

设置摇杆状态时,要从A0、A1引脚读取X轴和Y轴的模拟值,范围从0到1023,摇杆在中间原点的值是512

但由于硬件制造的问题,这个中间值有所偏差,我们在程序中假设偏差值是RANGE

最后通过判断X轴和Y轴的数值在(0,512-RANGE)、(512-RANGE,512+RANGE)、(512+RANGE,1023)哪个范围内来决定摇杆的位置,并调用Joystick中的setXAxis()和setYAxis()函数设置摇杆的状态

//获取摇杆X轴和Y轴的值,数值范围为0~1023,中值为512(有误差) X = analogRead(A0); Y = analogRead(A1); //避免多次重复设置X轴或Y轴的值 if ((X != oldX) || (Y != oldY)) { //X轴在512的偏差范围内,设置为0,即X在中间位置 if ((X >= 512 - RANGE) && (X 512 + RANGE)//X轴向右偏移 Joystick.setXAxis(-1); else Joystick.setXAxis(1);//X轴向左偏移 //Y轴在512的偏差范围内,设置为0,即Y在中间位置 if ((Y >= 512 - RANGE) && (Y 512 + RANGE)//Y轴向下偏移 Joystick.setYAxis(-1); else Joystick.setYAxis(1);//Y轴向上偏移 //保存X轴和Y轴的值 oldX = X; oldY = Y; } 3.测试手柄

把写好的程序上传到Leonardo主控器,然后就可以直接测试游戏手柄是否能正常使用了,小编只在windows10系统上做了测试,至于其他系统环境小伙伴们自行测试吧

首先打开控制面板,然后选择查看设备和打印机,在设备中找到Arduino Leonardo(一个游戏手柄的形状),选中Arduino Leonardo点击鼠标右键,选择游戏控制器设置,在弹出窗口中选择属性,打开测试页面即可看到轴和按钮两个测试项,推动摇杆时轴中的+号就会移动,按下按键时对应编号的按钮就会高亮,这就表示Arduino Leonardo可以作为游戏手柄使用了

注:具体操作请关注微信公众号:不莣初芯

4.魂斗罗游戏

小编在网上找到了一个游戏模拟器和魂斗罗游戏的nes文件,但是安装之前需要关闭计算机的杀毒软件!!

先解压压缩包,然后打开VirtuaNES文件夹,双击打开VirtuaNES.exe软件,最后把“魂斗罗S枪30条命版.nes”文件拖拽到VirtuaNES软件内就可以了运行魂斗罗游戏了,游戏开始会进入演示界面,暂时不用管,待配置完游戏手柄再退出。 注:具体操作请关注微信公众号:不莣初芯

5.设置游戏手柄

在VirtuaNES软件中打开选项菜单,选择控制器>然后在弹出窗口的左下角选择 设置2>窗口中出现空白的摇杆和按键选项>用鼠标左键单击空格,然后推动摇杆到对应的位置或按下对应的按键,空格处就会填充对应的摇杆或按键的ID>设置完以后单击确定就可以正常使用游戏手柄玩魂斗罗游戏了 注:具体操作请关注微信公众号:不莣初芯

注意:小编为了用起来方便,就把摇杆顺时针旋转了90度,X轴和Y轴的方向有些变化,另外小编还把X轴负方向作为了SELECT键,摇杆上的按键作为START键用来选择游戏关卡和开始游戏。实际操作时,小伙伴们可以按照自己的习惯设置摇杆和按键的功能。

最后,小编利用硬纸壳做了一个手柄的样子,有条件的小伙伴也可以用3D打印机打印一个手柄,然后跟着小编玩起来! 在这里插入图片描述 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3