Arduino Leonardoの導入(画像認識なしの自動化)

Nintendo Switch Controllerのライブラリを導入し、Arduino LeonardoをSwitchのコントローラーとして使用可能にするための方法を記述します。
 

Contributor:

こちゃてす氏(Leonardo導入のアドバイス、プログラムへのリンクの許可)
ツイフィール:https://twpf.jp/kochatece12 ←各種プログラムへのアクセスあり
 

1.機器の購入

基本的には、最初は正規品をお勧めしますが、KEY STUDIO社のものでも動作は安定しているようです
Arduino Leonardo(正規品)
KEYSTUDIO社製のArduino Leonardoのコンパチモデル
 

2.Arduino IDEインストール

プログラムの編集や書き込みを行う、Arduino IDEの導入をします。
①ソフトウェアのダウンロードページにアクセスします。
 
自分の環境に合ったものを選びます。Windows10の場合は赤枠をクリック。
※注意 Arduino IDEのバージョンが2.0以上だと安定しません。
先程のページを下の方までスクロールして、Legacy IDE(古いIDE)の項目から1.8.19をダウンロードします。
 
②寄付について聞かれるページに辿り着きますが、「JUST DOWNLOAD」でOKです。
(余裕がある方は、寄付もご検討ください。)
 
③ダウンロードしたexeファイルを開き、ソフトウェアをセットアップする。
 

3.ボードマネージャーからLeonardo追加

①ソフトウェアを起動し、「ツール>ボード>ボードマネージャー」を開く
 
②検索窓から「AVR」と検索し、「Leonardo」がパッケージに含まれているものを「インストール」する(AVRのバージョンは最新または1.8.3以上を必ず選んでください)。
 

4.GithubからNintendo Switch Controllerの導入

①Github : Nintendo Switch Controllerへアクセス
GitHub - interimadd/NintendoSwitchControll: Library for control Nintendo Switch with arduino leonardo.
Nintendo SWitchをArduino Leonardoを使って制御するArduinoのライブラリーです。 ライブラリー内の関数を組み合わせるだけで、様々な作業を自動化するArduinoのスケッチを作成することができます。 Leonardoだけで完結しているため、追加の電子部品やはんだ付け等が不要で、Switchに接続するだけで実行することができるため、短時間で導入することができます。 サンプルとしてライブラリ内にポケモンの孵化やワット稼ぎ、レイドバトルを自動化するスケッチを含んでいます。 ハードウェア Arduino Leonardo Arduino LeonardoとSwicthを接続するUSBケーブル ソフトウェア ライブラリーのインストール Arduinoのライブラリのあるディレクトリ(/Users/{username}/Documents/Arduino/libraries/ など)に、このレポジトリをcloneする/ダウンロードして展開する。 Arduino LeonardoのデバイスIDを書き換える hardware/arduino/avr/boards.txt内のleonardoのvidとpidを設定している個所を書き換える。 leonardo.vid=0x0f0d leonardo.pid=0x0092 ※ 複数ある場合は相当する箇所を全て書き換える ※ 見つからない場合はArduino IDEのファイル>スケッチ例>SPIから適当なスケッチを開き、スケッチ>スケッチの場所を開くで開いたディレクトリから遡っていくと、boards.txtがある サンプルスケッチを書き込む Arduino IDEを立ち上げる サンプルスケッチを開く スケッチ例→NintendoSwitchControleer→pokeomn ArduinoをPCに接続し、ボードをLeonardoに設定。シリアルポートも接続しているポートに変更する。 書き込む Switchに接続する SwicthのUSBポートにUSBケーブルを使ってLeonardoを接続する。 接続して数回の入力の後、入力を受け付け始める。 Switchをドックに刺した状態で、ドックのUSBポートにLeonardoを接続する方法でも動かすことができる。 育て屋から卵を回収→孵化→ボックスに預ける→ボックスを移動する、を繰り返すスケッチ ボックスに空きがある限り、ポケモンを孵化し続ける 初期条件は以下の通り ハシノマはらっぱにいること 自転車に乗っていること 手持ちが1体のみのこと Xボタンを押したときに「タウンマップ」が左上にあること ボックスが空のこと 育て屋にポケモンを預けていること 1ボックス分のポケモンを全て逃がすスケッチ 初期条件は以下の通り メニューを開いていないこと Xボタンを押したときに「ポケモン」が左上から1つ右の場所にあること 巣穴からワットを回収し続けるスケッチ 初期条件は以下の通り 願いのかたまりを投げ入れた巣穴の前にいること 巣穴のワットは回収済みであること Switchの本体設定で「インターネットで時間をあわせる」がOFFになっていること レイドバトル→ポケモンを捕獲→ボックスに預ける→願いの塊を投げ入れるを繰り返すスケッチ ボックスに空きがある限り、レイドバトルを続ける 初期条件は以下の通り 願いの塊を投げ入れた巣穴の前にいること 手持ちが1体のみのこと Aボタン連打でレイドバトルで勝てるようにすること Xボタンを押したときに「ポケモン」が左上の一つ右の場所にあること ボックスが空のこと 願いの塊を大量に持っていること 【ポケモン剣盾】全自動で卵を孵化させる装置 Arduinoでポケモン剣盾自動化してみた 自動ワット稼ぎ編
 
②「Code」をクリックし、「Download ZIP」で一式をダウンロードする。
 
③以下の、方法AorBでライブラリをインクルードする。

方法.A

A-1. スケッチ>ライブラリをインクルード>.ZIP形式のライブラリをインストール
 

方法.B

B-1.ダウンロードしたZipファイルを、「右クリック>全てを展開」で展開しておく
 
B-2.展開したフォルダをArduinoのLibraliesフォルダ内に移動する。
フォルダの位置は環境にもよるが、多くは下記のような配置になってるはず。
 
PC>Cドライブ>Program Files(x86)>Arduino>libraries
※画像は、NintendoSwitchControll-masterを「NintendoSwitchControll」にフォルダ名を変えてます。
 
 

5.ボードのVID/PIDの書き換え

PC>Cドライブ>Program Files(x86)>Arduino>hardware>arduino>avr へ移動します。
 
②bords.txtを以下のいずれかの方法で書き換えます。
 

方法A.

A-1.bords.txtを開きます。(できればVSコードなどコードエディタがおすすめ)
A-2. "leonardo.vid.0= " , "leonardo.pid.0=" の場所を全て下記のように書き換えます。
 
leonardo.vid.0=0x0f0d
leonardo.pid.0=0x0092
 
 
A-3.書き換え終了後、保存して閉じます。
 

方法B.

B-1.こちゃてす氏のGoogle Driveよりbords.txtをダウンロード
 
B-2.ダウンロードしたbords.txtをフォルダ内のものと置き換える
 

以上で基本的なセットアップは終了です。

 
 

6.オプション(こちゃてす氏のプログラムの導入)

こちゃてす氏のプログラムのいくつかは独自の関数を使っているため、それを使用可能にする必要があります。(以下の作業は一般的なSwitch用のLeonardoのプログラムがコンパイルできなくなるなどの影響はありません)
 
①こちゃてす氏のDriveのフォルダ(編集に必要なファイル)にアクセス
 
②下記の2つのデータのダウンロード
・auto_command_util.h
・auto_command_util.cpp
 
③ファイルの置き換え
PC>Cドライブ>Program Files(x86)>Arduino>libraries>NintendoSwitchController>src 内の同一名のファイルを置き換えます
 
以上で、こちゃてす氏の独自関数の導入は終了です。
 
2022/10/8 はんぺん追加編集。IDE2.X.Xで動かない問題の回避方法を説明。