只需要5分钟,手把手教大家DIY一个游戏手柄。
关于源程序,请给我这个公众号回复"游戏手柄"(同时会赠送大家俩本关于Arduino的书,非常值得一看,快去提取),自动获取!
这是实现游戏手柄需要的所有部件,Arduino R4作为控制中枢,负责按键及摇杆的输入,以及与电脑进行USB HID通讯。
HID是Human Interface Device的首字母缩写,即人体交互设备。
当芯片有了这个功能,就可以模拟鼠标、键盘或者游戏手柄这些设备了。
在Arduino上编写USB HID程序也是非常简单的。
这是一个最简单的USB HID程序。
Keyboard.write这一行代码就可以让Arduino模拟键盘打一个K。
它模拟的是按键按下并释放的这个动作,如果我们调用这个函数32次,则它就会打印32个K。
但我们一般不用 Keyboard.write()这个函数。
而是使用Keyboard.press()和Keyboard.release() 这两个函数模拟键盘输入。
这两个函数分别模拟的是按键按下和释放。
先来看Keyboard.press()函数,当我们把这个程序烧录到Arduino里面,它就会一直打K这个字母,且不会释放。
此时我们给它加一个3秒的延时,然后再加一个释放按键的函数Keyboard.release(),它就会按下K键3秒,再释放,可以看一下此时的现象,就相当于我们按了3秒K键,再松开。
为了更加真实的模拟键盘,我们给它加一个按键,它是这样连接的。
为了简化连接,我把单片机引脚设置成了上拉输入模式。
此时单片机内部其实是连接了一个上拉电阻的。
然后我们把这个程序上传到单片机,此时我们按下之后,电脑上就会一直输入K,释放之后便不再输入。如果只是按一下,再释放,它就会输入一个K,这就跟键盘的效果是一样的。
在游戏当中我们也可以编辑游戏操纵,如果我们把游戏的跳跃键设置成K键,那我们按这个键,人物就会跳动。
利用这个方法,我们可以再给它加一个按键,让它模拟L按下,这是它的程序。
然后再从游戏里面设置成攻击、加速键,这样就能实现让人物跳跃和攻击了。
接下来还需要设置方向键。
如果我们采用四个点阵按键,肯定可以实现这个功能。
但这样很难在面包板上实现,可以看一下面包板内部里面的金属连接。
我手上正好有一个XY摇杆,也可以用它来控制游戏方向。
但这个XY摇杆输出的是模拟量,它里面本质上是两个滑动变阻器,还有一个开关。
比如我们让这个摇杆从左到右移动,它就会输出0-5V之间的电压值。
而这种FC游戏手柄的方向键是数字量,不需要模拟量,只需要给它一个高低电平就可以了。
我们可以这么设置,以X轴为例,输出的电压值小于总电压的20%时,我们就让它按下A;大于总电压值的80%时,就让它按下D;如果不在这区间就让它释放按键。
同理,让Y轴模拟键盘的W、S键。
它还有一个按键,我们让它模拟键盘的H键。
这是它最终的接线示意图。
接下来在电脑上验证一下结果。然后我们在游戏当中重新编辑一下游戏操纵设置,这样自制的游戏手柄就大功告成了!用Arduino DIY游戏手柄就是这么简单!