用Arduino制作一个游戏手柄有多简单!3分钟你就学会了!

只需要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游戏手柄就是这么简单!