怎么用电脑控制Switch-用电脑控制Switch教程

你知道怎么用电脑控制Switch吗?今天小编就来教大家无需切换固件用电脑控制Switch,快来跟小编一起学习吧~...

  本文将介绍如何运用单片机作为中介,从PC/Mac/Linux端控制switch的按键操作。

  更新

  增加孵蛋脚本(hatch_egg.py)可以自行切换来孵化任意圈数的宝可梦。该脚本使用旷野地带的孵蛋屋,使用前清空默认盒子,只保留一只同行(例如火躯),并打开菜单后,连续按A能默认飞到旷野地带的蛋屋。开始代码时退出到大地图即可。

  增加自动放生脚本(release.py)可以自行修改需要放生盒子内的宝可梦数,盒子内需从左到右紧密排布

  增加自动刷日期脚本(change_date.py)可以自行修改运行次数。为了刷乱数帧,需先触发VS对战bug

  增加自动四大天王脚本(league.py)

  默认已知

  1. 刷固件进单片机 参见这里

  2. 如何运行python代码

  3. 基本编程基础。实际上十分简单,照葫芦画瓢即可,我也提供了一些样例,例如 advance_frame.py 是宝可梦剑盾团体战乱数连续刷帧(3帧)的按键流程写法

  硬件需求

  1. 单片机 (Arduino UNO R3)

  2. USB 转 TTL 模块 (FT232RL)

  3. USB 线若干 (例如USB Type B 转 Type A, mini USB 转 Type A这些) 导线若干

  加起来几十块就能搞定

  软件需求

  可以从我的fork里下载:https://github.com/wwwwwwzx/Switch-Fightstick

  注:我改的版本可以同时按下多个按键 这样可以在旷野地带绕圈(参考circle_in_wild_area.py)

  1. Joystick.hex (我已经编译好了atmega16u2的版本,直接刷进Arduino UNO R3即可)

  2. NSController.py(python类文件,基本写好了接口,其他代码需要调用到它)

  3. Python样例,连同上一个文件见 example 文件夹

  4. 安装pyserial,命令行 pip install pyserial 即可

  连线

  控制方向如下:

  电脑端(PC/Mac/Linux) -> USB到TTL模块 -> 单片机 -> [Switch底座 (充电或视频采集用,非必须) ->] -> Switch

连线图

  其中USB转TTL模块与单片机的连线见图示 (注意电源线VCC和地线GND不要连错,有些模块可能需要3.3V 需要看清说明)

  使用方法

  1)将我提供的Joystick.hex刷入单片机中 (只需一次即可,以后就不用再刷了)

  注:此时单片机直接连电脑

  2)按上图连线,并断开其他手柄的连接

  3)运行示例 simple_example.py ,保证NSController.py在同一文件夹内

  这段代码作用是连按A键十下

  如果检测到多个硬件(“Found multiple devices”),且不是第一个,把对应USB模块的地址带上引号作为字符串输入到Controller 的括号里即可(通过插拔模块可以分辨)

  例如看到

  Found multiple devices:

  /dev/cu.usbserial-A50285BI

  /dev/cu.usbserial-AO0099VT

  而第二个是你连switch的,那么把第三行修改成 ctr = Controller('/dev/cu.usbserial-AO0099VT') 再次运行即可

  如果没有响应,可以尝试对调一下TX RX的接线。指令发出的时候模块上TX RX两个灯都会亮

  4)如果成功了,那可以试试参考我的样本编写复杂的自动化流程了。

  键位对应表

  X Y A B L R ZL ZR 直接原名调用即可, 如ctr.A() 就是按下A键

  主页键(h),截图键(c),加号键(p),减号键(m)

  按下左摇杆(LS),按下右摇杆(RS)

  十字键上(u)下(d)左(l)右(r)

  左摇杆上(ls_u)下(ls_d)左(ls_l)右(ls_r)

  右摇杆上(rs_u)下(rs_d)左(rs_l)右(rs_r)

  然后函数内的数字可以控制按键的时间长短,以秒为单位,非正则保持不松开,如:

  ctr.A() :按下A键后马上松开(默认按下0.1秒)

  ctr.B(22) :按下B键22秒后松开

  ctr.ls_r(-1) 或 ctr.ls_r(0) :将左摇杆向右推并保持,不松开

  其他操作

  ctr = Controller() 创建一个名为ctr的实例,并自动连接

  ctr.release() 松开所有按键和摇杆

  ctr.close() 断开控制

  ctr.pause(33) 等待33秒

  还有一些简单示范如

  ctr.quit_app() 退出当前游戏

  ctr.AccessBackupSave() 同时按下上+X+B来调用剑盾备用存档 等

  总结

  (1)这样就不用为了实现不同的功能而反复刷固件,只需在电脑上运行不同python代码段即可。孵蛋圈数不同也可以自己调。有些地方可以自行减少等待时间提高效率,有些地方增加时间提高稳定性。自由度增加许多。

  (2)为了编写自己的固件也不用反复调试操作时机的时间轴(在原本程序构架上实现也不是很直觉)【我是为了之后可能的其他机械(乱数)操作,又懒得反复调时间就这么搞了】

  (3)将来可能可以写个app 用键盘实时控制switch

  (4)结合采集卡读出画面,甚至还可以反复读档在LGPE里刷闪超梦三鸟等


首页 导航 会员 客服
QQ 微信 邮箱 TOP