37
28

More than 3 years have passed since last update.

Nintendo Switch自動化 【2021年9月最新】

Last updated at Posted at 2021-09-01

はじめに

みなさんこんにちは。コロナ禍のご時世いかがお過ごしでしょうか。
Nintendo Switchをはじめとして、ゲームで遊ぶ機会は増えたのではないでしょうか。
1年半ほど前にArduinoを用いてSwitchを自動化する記事を書きました

こちらの記事を書いてからTwitter等で色々質問等受け付けておりましたが、先日同じように自動化を試みたものの色々な点が変わっていましたので、今回最新版ということで記事を改めて書くことにしました。

初期セットアップに詰まる方が多かったので、今回はファクトリーリセットを行なったPCで1から実装を行い、注意点等もまとめることにしました。

これを機に始められる方の参考になれば幸いです。

必要なもの

ハードウェア

  • Arduino Leonardo または Arduino Micro

一番多かった質問が「Arduino Unoでもできますか?」です。そのままではできません。
ArduinoにはデフォルトでUSB機器として信号を送信できるチップが搭載されていません。
この2つの機種にはデフォルトでそのチップ ATmega32u4 が搭載されています。ですので必ずこのチップが搭載されたArduinoを選ぶ必要があります。

Amazonで探す際には必ずこのチップが搭載されているか確認して購入されることをお勧めします。
(似た名前にATmega328p というのがありますが異なります)

  • PC (windows mac どちらでも可能)

言わずもがなですが。今回使用したのは Mac OS Big Sur 11.4 です。

  • USB ケーブル (Type-A - microUSB)

PC に Arduino を接続するのに必要です

  • Type-C 変換器

USBtype-AをSwitchに接続するために使用します

PC のセットアップ

Arduino IDE のインストール

まずは Arduino にプログラムを書き込むための Arduino IDE をインストールします。

スクリーンショット 2021-09-01 15.07.37.png

ご自身の使用しているOSに合ったものをインストールしてください。

依存ライブラリのインストール

インストールが終わったら起動して、上部メニューから ツール > ライブラリを管理 と進みます。

スクリーンショット 2021-09-01 15.10.42.png

右上に検索ボックスがありますので、そこに ArduinoSTL と入力すると全く同じ名前のライブラリが見つかると思います。(今回の画像だと2番目)
そちらをインストールしてください。(バージョンは最新で大丈夫です)
画像のように INSTALLED となっていれば大丈夫です。

ボードマネージャのバージョン変更

先ほどインストールしたライブラリは今回使用するSwitch操作用のライブラリの依存パッケージなのですが、最新のボードマネージャだと不具合で動作しないのでバージョンを変更する必要があります。

上部メニューから ツール > ボード > ボードマネージャ と進みます。

おそらく一番上にリストされた Arduino AVR Boards のバージョンが1.8.3かそれ以上になっていると思いますので、こちらのバージョンを 1.8.2 に変更します。

バージョンを選択から 1.8.2 を選択してインストールします。

スクリーンショット 2021-09-01 15.17.01.png

このようにバージョンが 1.8.2 に変わっていたら大丈夫です。

Switch操作用ライブラリの追加

以下のGitHubのリポジトリを使用させていただきます。

ファイル

右上の緑色の code というボタンから Download ZIP を選択してダウンロードします。
ダウンロードが終わったら、ZIPを展開すると SwitchControlLibrary-master というフォルダになると思います。こちらをArduinoのライブラリフォルダにコピーします。

Windowsの人は
C:\Program files(x86)\Arduino\libraries
Macの人は
~/Documents/Arduino/libraries

コードを書く

実際にArduino IDEにコードを書いていきましょう。
詳しいリファレンスは先ほどのGitHubのページに詳しく書いてくださっているのでそちらを参考にしてください。

前に書いた記事ではバージョンが1系だったのですが、今回2系にアップデートされており、互換性はありません。
1系で既に書いてしまった人はダウンロードする際に1系を選択してください。
以下のコード例は全て2系で記述しています。

バージョン1系と2系の違いは

  • 送信する関数が追加された
  • ボタンを押す関数が統一された

主にこの2点です。Aボタンを押したい時は

SwitchControlLibrary().pressButton(Button::A);

のように記述します。また、これだけではボタンの送信は行われず

SwitchControlLibrary().sendReport();

こちらを呼び出すことで初めてキーの送信がされます。例えばAとBを同時押ししたい時には

SwitchControlLibrary().pressButton(Button::A);
SwitchControlLibrary().pressButton(Button::B);
SwitchControlLibrary().sendReport();

とすることで同時押しが可能になっています。

今回はAボタンを秒間10回連打するプログラムを書いてみます。

#include <SwitchControlLibrary.h>

void setup() {
  // put your setup code here, to run once:
  SwitchControlLibrary(); // 初期化
}

void loop() {
  // put your main code here, to run repeatedly:
   SwitchControlLibrary().pressButton(Button::A); // Aボタンを押す
   SwitchControlLibrary().sendReport(); // Aボタンを押したことを反映
   delay(50); // 50 ms 待機
   SwitchControlLibrary().releaseButton(Button::A); // Aボタンを離す
   SwitchControlLibrary().sendReport(); // Aボタンを離したことを反映
   delay(50); // 50 ms 待機
}

Arduinoへの書き込み

それでは書き込みを行いますが、ここでも設定事項があります。

上部メニューの ツール > ボードから Arduino Leonardo に変更します
スクリーンショット 2021-09-01 15.37.34.png

上部メニューの ツール > シリアルポートから Arduinoが接続されているポートに変更します
スクリーンショット 2021-09-01 15.39.43.png

これで1度書き込みを行います。書き込みはIDE左上の矢印ボタンで行います。

完了したらWebでゲームパッドをテストするところがあるのでそこで確認をしてみましょう。

スクリーンショット 2021-09-01 15.51.40.png

次にこのコントローラをPro Controllerと認識させるために細工をします。以下の設定ファイルを開きましょう。

Windowsの人は
C:\Program files(x86)\Arduino\hardware\avr\1.8.2\boards.txt

Mac の人は
/Library/Arduino15/packages/arduino/hardware/avr/1.8.2/boards.txt

こちらの 311, 312 行目を以下のように変更します

# 変更前
leonardo.build.vid=0x2341
leonardo.build.pid=0x8036

# 変更後
leonardo.build.vid=0x0f0d
leonardo.build.pid=0x0092

変更が終わったら再度IDEで書き込みを行います。

無事に変更が適用されていたら成功です!
スクリーンショット 2021-09-01 15.58.56.png

313行目の名前を変えるとコントローラの名前も好きに設定できます
Switchは先ほど設定したIDで判断しますのでここは何を書いても大丈夫です

スクリーンショット 2021-09-01 16.02.58.png

最後に

より良い自動化ライフを!

37
28
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
28