【Arduino自動化 番外編2】NintendoSwitchControllライブラリの導入と、自動化できる作業の一覧【ポケモン剣盾自動化】

こんにちは。ますたーです。

本記事では、前回の記事で紹介したArduino Leonardo用のSwitch操作用ライブラリ「NintendoSwitchControll」のインストール手順を説明します。つまり、導入記事でインストールする「SwitchControlLibrary」と合わせて2種類のライブラリを扱えるようになることをゴールとします。

何が嬉しいかと言うと「Arduino Leonardoでポケモン剣盾を自動化するけど、ソースコードを触る気はサラサラ無いよ。コピペしかしないよ」って方には朗報で、どちらのライブラリで書かれたソースコードも使えるようになります。要するに、単純計算でコピペでつかえるプログラムの種類が2倍になります。

 

では、もくじです。

経緯は長いので「大前提」まで読み飛ばし可。

結論(自動化できる作業の一覧)だけ読みたい人は「2つのライブラリを導入してできるポケモン剣盾マクロ」までジャンプしてください。

※本ブログに初めてお越しの方は「本ブログについて」もぜひ、ご覧ください。

 

経緯

前回の記事では「番外編」と称して、ポケモン剣盾自動化をするためにはArduino UNOまたはArduino Leonardoのいずれかを購入すれば良いことを紹介しました。そして、その中で、Arduino Leonardoには「SwitchControlLibrary」「NintendoSwitchControll」の2つのライブラリがあることを取り上げました。

繰り返しになりますが、当ブログでは導入記事でも紹介している通り「Arduino Leonardo」+「SwitchControlLibrary」の組み合わせをおすすめしています。これは、当ブログのソースコードを読んだり、自らソースコードをバリバリ書いていく人が、導入時あるいは開発時に混乱しないためのある種の指針です。

これらのライブラリは両方とも目的が同じなので、名前が似ているというだけでなく、中身の定数宣言や基本的なclassの作り方・メソッド構成もそっくりです。ゆえに、両方を導入すると、開発者はソースコードをコピペしたり参照したりする際に、どちらのライブラリを使っているのかを意識せねばなりません。

 

NintendoSwitchControllとSwitchControlLibraryの冒頭比較

NintendoSwitchControllとSwitchControlLibraryのライブラリの一部を抜粋。
説明のため恣意的な比較になるが、ほぼすべてが一致していることが分かる。

一方で、ソースコードをメンテナンスする予定がなかったり、サンプルや世の中に公開されているソースを「そのまま使う」だけという場合には、事情が変わります。この場合、「プログラミング知識」「ライブラリの知識」を一切使わないので、目的が「コンパイルがきちんとできること」に挿げ替えられます。要するに、どちらのライブラリでも構わないから、きちんと動いてくれさえすればOKという発想になります。

だいぶ前置きが長くなりましたが、本記事では、導入記事でインストールする「SwitchControlLibrary」に続いて、「NintendoSwitchControll」も導入する手順を紹介します。

コードを読んで開発や改良をする場合
コピペしかしない前提の場合

Arduino Leonardoを使って剣盾を自動化する場合の考え方の比較。
(左:コードを読んで開発や改良をする場合/右:コピペしかしない前提の場合)

 

大前提

本記事は、本ブログの導入記事に則って、ArduinoIDEのインストールならびに、その他諸々の設定(AVRの導入、board.txtの書き換えSTL・SwitchControlLibraryの導入など)が完了している前提で書いています。

もし、まだこれらを導入されていない方は先にそちらを進めてください。SwitchControlLibraryの導入以外、すべて共通の導入手順ですし、手間もそう変わらないのでついでにSwitchControlLibraryもインストールしておくと良いかと思います。

 

「NintendoSwitchControll」のインストール

本記事で紹介する「NintendoSwitchControll」は、前回同様、Githubhttps://github.com/interimadd/NintendoSwitchControll)からダウンロードできます。

NintendoSwitchControllのダウンロード手順

NintendoSwitchControllのダウンロード手順

ZIPをダウンロードしたら解凍し、Arduinoのライブラリフォルダにフォルダごと入れてください。もちろん、本作業はArduino IDEが終了している状態で行うことを推奨します。場所は、下記好きな方で大丈夫です。

  • ユーザドキュメント直下のArduinoフォルダ【おすすめ】
    (例 C:\Users\<ユーザ名>\Documents\Arduino\libraries )
  • 本体インストールフォルダ(Program files(x86))のArduinoフォルダ
    (例 C:\Program Files (x86)\Arduino\libraries )

 

Windowsインストーラー版の場合、ドキュメントフォルダ直下にArduinoフォルダがある。Arduino→librariesにフォルダごとドラッグ&ドロップでライブラリの追加が完了する。

 

なんと、ライブラリの追加はこれで完了です。お疲れさまでした。

これで分かると思いますが、Arduino IDEにおいて、ライブラリの導入自体はハードルが決して高くありません。

 

サンプルスケッチのコンパイル

「NintendoSwitchControll」ライブラリを使ったサンプルファイルは、実はライブラリの中に同梱されています(お得ですね)。

具体的には、ライブラリをインストールしたファイル(例  C:\Users\<ユーザ名>\Documents\Arduino\libraries\NintendoSwitchControll-master\examples\pokemon )の中に格納されています。ここから、実行したいプログラムの入ったフォルダを、まるごとArduinoのフォルダにコピペまたは移動すれば準備完了です。

後は、Arduino LeonardoをPCに差し込み、その中のフォルダにある.inoをダブルクリックで開き、前回と同様、左上の「マイコンボードに書き込む」ボタンを押せばOKです。

なお、本ライブラリのサンプルの動作については、Githubを確認してください。

GitHub - NintendoSwitchControll: サンプルスケッチの説明

f:id:tangential_star:20201109235422p:plain

サンプルプログラムの導入方法。examples→pokemonフォルダの中から、
使いたいプログラムをフォルダごとArduinoフォルダにコピペする。

 

2つのライブラリを導入してできるポケモン剣盾マクロ

ここまでお疲れさまでした。そして、おめでとうございます。

これで、今、あなたのPCにはArduinoIDEと、Switchを制御する主要なライブラリ「SwitchControlLibrary」と「NintendoSwitchControll」の2つが無事に導入されました。

これによって様々なことがコピペで完結できるようになります。具体例を下記にリンクと共に一例を載せます。

なお、使い方は必ずリンク先で確認の上、自己責任で利用してください。また、動作をすべて確認したわけではありませんのであしからず。

 

2021/2/5追記;本記事を執筆していた頃と違い、私のブログ内容もだいぶ充実してきました。もし、当ブログの自動化記事のみをご覧になりたい方がいらっしゃれば下記からカテゴリ別にアクセスできます。

ポケモン剣盾Arduino自動化 カテゴリーの記事一覧 - ますたーの忘備録

 

SwitchControlLibraryを利用したプログラム

NintendoSwitchControllを利用したプログラム

※先頭3つはライブラリのサンプルで同梱されているもの

 

結論

本記事では、本ブログでおすすめしている「SwitchControlLibrary」の導入と合わせて「NintendoSwitchControll」の導入手順を紹介しました。

そして、これら2つのライブラリに対応することで、前項でリンク先を載せている通り、下記さまざまなことがコピペだけでできるようになります

  • きのみを揺らし続ける
  • 穴掘り兄弟に穴を掘らせ続ける
  • 自動でワットを回収する
  • ワットショップの目玉商品を買い続ける
  • 化石を自動で復元させる
  • 羽を集め続ける
  • 自動でマジカル交換を行い続ける
  • 自動で孵化させる
  • 自動でボックスのポケモンを逃がす
  • 自動でレイドバトルに参加し捕獲する
  • 色違い用の孵化厳選をする
  • 自動でカレーを作り続ける
  • 自動で掘り出し物を買い続ける
  • 自動でIDくじを引き続ける
  • 自動で乱数調整の高速消費をする
  • 自動でレイドバトルをソロ周回する
  • 自動でレイドバトルをローカル配布する

なんて魅力的なのでしょう(一部手前味噌ですが)。

このように、ライブラリの垣根を超えてスケッチの導入ができるのは、Arduino IDEの良いところだと思います。

 

あとがき

今回は、導入記事Arduino Leonardoをおすすめした理由がなんとなく理解できたのではないかと思います。また、やってみると意外と簡単なのだと思ったのではないでしょうか。

上記リンクの種類でもわかりますが、今は全国にいる有志の方々がソースコードを紹介しています。おかげで、コピペはもちろん実は開発も捗るんですよね。

本記事や、これらの関連記事などを読んで、少しでも興味を持った方がいらっしゃれば、是非ともまずは開発や改善にチャレンジしてみてください。

ポケモン剣盾に限らず、Switchの自動化には可能性があると私は思いますし、これがきっかけになって将来有望なプログラマハッカーが現れればなお素敵なことだと思います。

 

 

ちなみに、上記以外のソースコードも、Webを探せば出てくるかもしれません。そういうものはたいてい、「Arduino Leonardo やりたいこと」で検索すると出てきます。

そして、出てきたソースコードの先頭行を確認して

  • 「#include <auto_command_util.h>」とあれば「NintendoSwitchControll」が必要
  • 「#include <SwitchControlLibrary.h>」とあれば「SwitchControlLibrary」が必要
  • どちらも入っていなければ、おそらくそのソースコードは使えないもの

と簡易に判断することもできます。

もし、「他にも調べたいな!」となったら上記手順は一度お試しあれ。

 

c⌒っ.ω.)っ ではでは!

 

前記事:

【Arduino自動化 番外編】マイコン導入にあたって気をつけるべきと思ったこと【ポケモン自動化 方法調査】

導入記事:

【Arduino自動化01】Arduino開発環境の導入