在Switch上使用Arduino Uno R3开发板模拟手柄按键连发

在Switch上玩异度之刃2,给异刃喂食加羁绊度的过程实在是太痛苦了,需要不停地按A键,费时间还伤手柄。给买不起连发手柄的你推荐DIY单片机模拟连发,希望入手异度之刃2的同学能自己动手丰衣足食,早日把异刃都升级到SS信赖度。

硬件准备

  1. Arduino Uno R3开发板,以及专用数据线 (淘宝网上购买只需30RMB左右,比市面上的连发手柄便宜太多)

  
Arduino Uno R3
  

注意一定要买这种左上角橘色方框里带6个插针的

  1. 一个Type-C转USB的OTG转接线,一头是Type-C插NS底下的充电口上,一头插USB数据线

  
Type-C转USB
  

软件准备

  1. Arduino IDE(用于安装Arduino驱动并测试开发板功能)
    百度云盘链接    密码:9r81

  2. Flip(用于给Arduino写入A键连发固件)
    百度云盘链接    密码:tc6l

  3. A键连发固件(Joystick.hex 每200ms按一次A键)
    百度云盘链接    密码:0xlp

具体实现步骤

安装Arduino IDE及驱动

安装Arduino-windows.exe

打开刚刚安装的Arduino IDE,插上Arduino开发板

  
IDE界面
  

文件->示例->01.Basics->Fade,弹出新窗口;

接着在新窗口工具->开发板->Arduino/Genuino Uno

然后工具->端口->COM3

最后,按下左上角”√”右边的的->键,程序就会写入Arduino,开发板上的灯会闪烁。等写入完成后,板子会亮起一个呼吸灯,到这里说明驱动和板子都是正常的,可以进行下一步。

安装固件写入软件Flip

安装JRE-Flip-Installer.exe,记住安装位置。安装好之后,把Arduino开发板拔下来重插,然后找一个金属物品,剪刀或者钥匙什么的,用金属物体短接(就是短暂接通)下图所示板子上离USB接口最近的两个插针。

  
短接插针
  

如果接通成功,板子灯会闪,电脑也会有设备拔出和重新插入的提示音,这时候Arduino即进入DFU模式,可以写固件了。

这时候,在我的电脑右击,点击管理->设备管理器,应该会发现一个打着感叹号的未知设备,在这个设备上右击,点击更新驱动程序,选择浏览计算机以查找驱动程序软件,然后选择刚才安装Flip的文件夹\Flip 3.4.7\usb并勾选上包括子文件夹,点击下一步,如果没问题的话就OK了。

给Arduino写入固件

先把板子拔下来重插,然后再次短接那两个插针,这时候电脑有提示音设备插入,设备管理器也没有未知设备了。打开安装的Flip软件,按照图示选择ATmega16U2

  
Flip操作
  

然后,按下Ctrl + U,出现提示框,点击Open后板子会闪,如果没有提示错误,那么就连接成功。

接下来在弹出的文件浏览器中选择A键连发固件Joystick.hex,注意这个hex文件应该放置在纯英文目录下。

然后勾选这4项,点击Run,然后会弹出进度条,速度很快几秒钟,那四个选项前的灰点变绿,说明一切OK至此开发板的准备已经完成。

  
勾选左侧选项
  

在Switch上进行测试

在NS系统设置中选择Controllers and Sensors->Test Input Devices->Test Controller Buttons,这时候用OTG转接器把Arduino插入NS底部充电口,板子上的灯亮起,过几秒钟,就会看到输入了一串A键,测试成功!

  
测试
  

补充说明

该项目的开源HID库:https://github.com/progmem/Switch-Fightstick

工具包中附带的Joystick.hex其实是已经编译好的二进制程序,只有A键连发的功能,每200ms左右按一次A键,足够满足异度2刷信赖度的需求。

另外,目前尚不清楚使用这个设备是否会带来BAN机、烧机、毁档等一系列副作用,本人是正常使用的。因为从原理上来讲,并没有不妥之处,与第三方手柄的连发功能原理相同,但是也不能保证没有问题,造成的一切后果大家需要自己承担,如何取舍看大家自己的考虑了。