ポケモン剣盾やBDSPをプレイしていた時に欲しくなって買ってみたマイコン「Arduino Uno R3」を
ポケモンSVでも使用するために、一から環境構築しなおして利用してみました。
その際、少々癖が強く、なかなかうまくいかなかった部分もあったので試行錯誤したことを備忘録的な形で残しておこうかと思います。
主にここではArduino Uno R3、いわゆる「Atmega16U2」用のプログラムを「Arudino IDEでコンパイルしてマイコンへ書き込む」までのお話です。
用意するもの
・Arduino Uno R3
今回使用するマイコンです。Amazonとかで売ってます。
・Windows OSのPC
マイコンにプログラムを書き込むために必要です。
・Arduino IDE
Arduino Uno R3へ書き込むプログラムを書く統合開発環境です。
・dfu-programmer.exe
コンパイルしたバイナリファイルをマイコンに書き込むのに必要です。dfu-programmer公式から「dfu-programmer-win-0.7.0.zip」をダウンロードして使用します。
参考になったサイト
初期設定で参考になりました。
dfu-programmer.exeについても紹介されています。
Arduino IDEのインストール
参考になったサイトで紹介されている初期設定を完了したあと、「Arudino IDE」をインストールします。
2022年11月26日現在では「Arduino IDE 2.0.2」と「Legacy IDE (1.8.X)」という2つのVersionがありますが、
「Legacy IDE (1.8.X)」を選びましょう。下図では赤枠の「Arduino IDE 1.8.19」です。
最新版のIDEをダウンロードしない理由はとしては、コンパイル時に「リンカーエラー」が多数発生して正常にコンパイルできず、試しにIDEのバージョンを下げたら正常にコンパイルできたからです。未だにコンパイルできなかった理由は明確にはわかっていませんが、とりあえず動かすことを目的としていたので考えるのは後回しにしました。
Arduino IDEの設定
Arduino Uno R3用のプログラムをコンパイルするために「Boards Manager」の追加設定が必要になります。
Arduino IDEを起動後、「環境設定」を開き「追加のボードマネージャ」を設定します。
以下のURLを貼り付けて環境設定の変更内容を保存します。
「ツール」⇒「ボード」⇒「ボードマネージャー」の順に押下し「ボードマネージャ」ウィンドウを表示します。
ボードマネージャウィンドウで「HoodLoader2」と入力して、最新版のボードをインストールします。
SwitchにArudino Uno R3をコントローラと認識させるため、「boards.txt」を書き換えます。
おそらく「ユーザー名\AppData\Local\Arduino15\packages\HoodLoader2\hardware\avr\2.0.5」の中に「boards.txt」があるはずです。
以下の「HoodLoader2atmega16u2.vid.」を検索して、書き換えてください。他3つも同じ要領で書き換えます。
HoodLoader2atmega16u2.vid.0=0x0f0d
HoodLoader2atmega16u2.pid.0=0x0092
HoodLoader2atmega16u2.build.vid=0x0f0d
HoodLoader2atmega16u2.build.pid=0x0092
ここまでで、Arduino IDEでArduino Uno R3用のプログラムをコンパイルする準備ができました。
コンパイルからマイコンへの書き込み
プログラムが書き終わり「検証・コンパイル」が完了したら、実際にArduino Uno R3へ書き込むために必要なバイナリファイルを書き出していきます。
成功すると「プログラム名.ino」ファイルが格納されているフォルダに「プログラム名.ino.HoodLoader2.hex」という「Hex」ファイルが出力されています。
この「Hexファイル」をdfu-programmerを使ってマイコンへ書き込みます。
おわりに
簡単にですがArduino Uno R3を使う際に実施した環境構築をまとめました。
このやり方でポケモンSVの学校内最強決定戦とかを周回するプログラムをマイコンに書き込んで実際にやってみたりしています。
とはいえ、こだわらなければ自動化筆頭の孵化作業はしないでも、
厳選作業はレイド産でOKですし、アイテムも充実しているので、
意外とそこまで自動化する作業とかないのかなと感じています。
せっかく環境整えたので熱が冷めないうちに何か思いついたらプログラム書いてみようかなぁと思ってます。
余談ですが、ポケモンSVはストーリーがかなり良かった気がしてます。