ポケモンSV楽しいですよね。
最近だとランクマッチが始まりましたが対戦を始める前にポケモンの育成をしなければいけません。
育成には結構お金がかかります。
なので流行りのニンフィアで学生最強大会を周回するやつをやろうと思ったのですが
家に連射コントローラーがありませんでした。
ArduinoMicroはあったのでそれで代用しました。
自分用のメモとして手順を書いていきます。
試す際は自己責任でお願いいたします。
必要なもの
- Arduino Pro Micro (もしくはLeonardo) 互換品でOK
- USB (MicroB to タイプA) Arduino買えばついてきてるかも
- USBタイプAをタイプCに変換できるもの(Switch本体に直接つなぐ場合は必要、ドッグに接続する場合は不要)
USB タイプC変換器 もしくは USBタイプCハブ (充電しながら使いたい場合ハブのほうがおすすめ) - PC (Windows or Macどちらでも可能)
Arduino IDEのインストール
まずArduino公式サイトよりArduinoIDEをインストールします。
現在(2022/12/6)時点で最新バージョンは「Arduino IDE 2.0.3」ですが古いバージョンのほうが使いやすいので下に行き「Legacy IDE (1.8.X)」からダウンロード。
ダウンロードし、セットアップが完了したらライブラリのインストールをしていきます。
必要なライブラリのインストール
ArduinoSTLのインストール
ArduinoIDEを開いて上のタブからツール→ライブラリ管理を選択。
その後右上の検索欄に「ArduinoSTL」と入力
検索結果にそのままArduinoSTLというライブラリがあると思うので(上記画像上から二番目)
最新のバージョンを選択してインストール。
Arduino AVR Boardsのバージョンダウン
上のタブから ツール→ボード→ボードマネージャ を選択。
ボードマネージャが開きます。
何もしなくても一番上に「Arduino AVR Boards」が出てくると思います。
カーソルを合わせるとバージョンを選択できるので「1.8.2」を選択してインストールします。
バージョンが1.8.2に変わっていたらOK
Switch Control Libraryのインストール
celclowさんが公開しているSwitchControlLibraryというGitHubリポジトリをダウンロードします。
↑上記URLよりv1.0.0もしくはv2.0.2をダウンロード
(最新バージョンはv2.0.2ですがネット上にあるソースコードがv1.0.0のものが多数なため
ここではv1.0.0をダウンロードします。v2.0.2だとv1.0.0で書かれたコードは動作しません。)
ZIPフォルダを解凍すると「SwitchControlLibrary-master」というファイルになるのでそのファイルを
Windowsの場合
C:\Program Files (x86)\Arduino\libraries
もしくは
C:\Users\ユーザー名\Documents\Arduino\libraries
のどちらか一つに配置
Macの場合
…/Documents/Arduino/libraries
に配置します。
Arduinoをポッ拳コントローラーとして認識させる
使用するArduinoをポッ拳コントローラーと認識されるようにしていきます。
ポッ拳コントローラーとして認識されていないとSwitchに接続しても動きません。
一旦、ArduinoIDEを終了しておきます。
Windows
C:\Users\ユーザー名\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.2
もしくは
C:\Program Files (x86)\Arduino\hardware\arduino\avr
Mac
…/Library/Arduino15/packages/arduino/hardware/avr/1.8.2/
上記フォルダの中に「boards.txt」というファイルがあるのでこれを書き換えていきます。
書き換える場所は285、286、311、312行目です。
285行目 leonardo.vid.1=0x2341 → leonardo.vid.1=0x0f0d
286行目 leonardo.pid.1=0x8036 → leonardo.pid.1=0x0092
311行目 leonardo.build.vid=0x2341 → leonardo.build.vid=0x0f0d
312行目 leonardo.build.pid=0x8036 → leonardo.build.pid=0x0092
このように書き換えます。
保存した後ArduinoをPCに挿しArduinoIDEを開いて ツール→ボード情報を取得を選択。
上記画像のように
VID : 0F0D
PID : 0092
となっていたら書き換えは成功されてポッ拳コントローラーとして認識されています。
コードを書いてArduinoに書き込む
だいたいの環境はそろったので実際にコードを書き込んでいきます。
詳しい書き方はSwitchControlLibraryのREADMEを参照ください。
v1.0.0での書き方を軽く記載しておきます。
Aボタンを押す操作をしたい場合
SwitchControlLibrary().PressButtonA();
上のようにAボタンを押す操作と
SwitchControlLibrary().ReleaseButtonA();
上のようなAボタンを離す操作が必要になります。(長押しをしない限り)
同様に十字キーも
SwitchControlLibrary().MoveHat(6); //十字キー左
方向キーの入力と
SwitchControlLibrary().MoveHat(8); // 十字キーニュートラル
十字キーをニュートラルに戻す操作がセットになります。
なので実際の学生大会A連打のサンプルコードはこんな感じになります。
#include <SwitchControlLibrary.h>
// 初期処理 マイコン接続後1番に動きます
void setup(){
}
// 繰り返し処理 マイコンの接続をやめるまで{}内を繰り返します
void loop() {
ButtonA();
delay(50); //50ミリ秒のディレイ
}
//Aボタンを押して離す関数を用意しておく
void ButtonA(){
SwitchControlLibrary().PressButtonA();
delay(50); //50ミリ秒のディレイ
SwitchControlLibrary().ReleaseButtonA();
}
上記はAボタンのみ関数化してますが他のボタンも同様にしておくと自分で書くときに便利です。
上記コードをコピペしたら左上のチェックマーク(検証ボタン)を押すと下のほうに
「コンパイルが完了しました。」と出ると思います。
出なかった場合今までの手順がうまくできていないかと思うのでエラーの内容を調べてみるかもう一度手順を見直してみてください。
「コンパイルが完了しました。」が出たら正しくコードが書けているので、
この段階でPCにはArduinoを接続しておいてください。
その後、ツール→ボード→ArduinoLeonardo を選択。 (Arduino Pro Microの場合でもLeonardoでOK)
その後ツール→シリアルポート→Arduinoが接続されているポートを選択(画像ではCOM14)
設定が終わったら先ほど押した左上のチェックマークの右にある
右矢印ボタン(マイコンボードに書き込むボタン)を押します。
しばらく待つと
下のほうにに「ボードへの書き込みが完了しました。」と出たら書き込み成功です。
後はSwitchに差し込んだら動作すると思います。
動作させる際の注意点
ドッグを介してUSBを差し込む場合の注意点ですがArduinoをSwitchに差し込んだ時Proコンが接続されている場合、反応しないためProコンを接続解除しておいてください。
その後、Joyコンでマクロを実行したい場面の直前まで持っていき、JoyコンをSwitchにしまった後に
USBでArduinoとSwitchを接続すると動作すると思います。
Switch本体にタイプC変換器を用いて差し込む場合もProコンの接続解除は必要です。
感想
学生最強大会以外にもおそらく使い道が必ず出てくると思うので一つ持っておいて損はないと思います。ネットに転がっている剣盾のソースコードを流用すればアイデア次第で色んなものを自動化できると思います。
まとめ
Arduino一つあればポケモンに限らず色んなSwitchのゲームを自動化できるようになります
今回ArduinoProMicroを使って自動化しましたが、手順が複雑にはなるもののArduinoUNOでも可能なので暇があればUNOでのやり方も書こうかと思います。
コメント