LoginSignup
6
6

More than 3 years have passed since last update.

Arduinoを用いたポケモン剣盾のリーグ周回自動化

Posted at

概要

Arduinoを用いたリーグ周回自動化のプログラムを作成しました
おおよそ8分30秒で周回することが可能で,効率的にガンテツボールやかえんだま等を集められます

きっかけ

ワット稼ぎを自動化する記事をみて,リーグ周回自動化に応用できそうだと感じた
・マクロコンを買うより安上がりだった

準備

・Arduino Leonardもしくはその互換機
 これとか 安いものなら一個およそ900円程度
・typeAオス-typeCオスのケーブル
 switchとArduinoを接続するために必要

環境構築

Arduino IDEのインストール

 公式サイトからJUST DOWNLOADしてインストール

switch操作用ライブラリのインストール

 このページで,clone or download からDownload ZIP を選択し保存する
 ファイルを解凍し,SwitchControlLibrary-masterを[Arduinoがインストールされたディレクトリ]/librariesに配置する

boards.txtの編集

[Arduinoがインストールされたディレクトリ]/hardware/arduino/avr/boards.txtを開き,285,286行目を以下のように変更する

leonardo.vid.1=0x0f0d
leonardo.pid.1=0x0092

・また,311,312行目を以下のように変更する

leonardo.build.vid=0x0f0d
leonardo.build.pid=0x0092

自動化の手順

Arduino IDEの準備

・usbケーブルを用いてArduinoをpcに接続する
・Arduino IDEを起動し,ツール→ボードからArduino Leonardを選択,シリアルポートはArduinoを接続したポートを選択する

スケッチの書き込み

 作成したスケッチを以下に記す

#include<SwitchControlLibrary.h>


void setup() {
  // put your setup code here, to run once:
  //コントローラーを認識させるための処理。LR連打してるだけ
  SwitchControlLibrary().PressButtonR();
  delay(50);
  SwitchControlLibrary().ReleaseButtonR();
  delay(500);
  SwitchControlLibrary().PressButtonL();
  delay(50);
  SwitchControlLibrary().ReleaseButtonL();
  delay(500);
  SwitchControlLibrary().PressButtonR();
  delay(50);
  SwitchControlLibrary().ReleaseButtonR();
  delay(500);
  SwitchControlLibrary().PressButtonR();
  delay(50);
  SwitchControlLibrary().ReleaseButtonR();
  delay(500);
  SwitchControlLibrary().PressButtonL();
  delay(50);
  SwitchControlLibrary().ReleaseButtonL();
  delay(500);
  SwitchControlLibrary().PressButtonR();
  delay(50);
  SwitchControlLibrary().ReleaseButtonR();
  delay(2000);
  // 斜め上入力しっぱなし
  SwitchControlLibrary().MoveLeftStick(158,256); 
}

void loop() {
  // put your main code here, to run repeatedly:
  //7回A,1回Bの繰り返し
  SwitchControlLibrary().PressButtonA();
  delay(50);
  SwitchControlLibrary().ReleaseButtonA();
  delay(500);//1
  SwitchControlLibrary().PressButtonA();
  delay(50);
  SwitchControlLibrary().ReleaseButtonA();
  delay(500);//2
   SwitchControlLibrary().PressButtonA();
  delay(50);
  SwitchControlLibrary().ReleaseButtonA();
  delay(500);//3
  SwitchControlLibrary().PressButtonA();
  delay(50);
  SwitchControlLibrary().ReleaseButtonA();
  delay(500);//4
  SwitchControlLibrary().PressButtonA();
  delay(50);
  SwitchControlLibrary().ReleaseButtonA();
  delay(500);//5
  SwitchControlLibrary().PressButtonA();
  delay(50);
  SwitchControlLibrary().ReleaseButtonA();
  delay(500);//6
  SwitchControlLibrary().PressButtonA();
  delay(50);
  SwitchControlLibrary().ReleaseButtonA();
  delay(500);//7
  SwitchControlLibrary().PressButtonB();
  delay(50);
  SwitchControlLibrary().ReleaseButtonB();
  delay(500);//B
}

 このコードを書き込むことで自動化を行えます

実行

・剣盾を起動し,リーグの受付の目の前にいる状態にしておく
・スケッチを書き込んだArduinoをケーブルを用いてswitchに接続することで自動でリーグ周回を行うことができる

補足

・delayの値は適当なので各自で調整してください
・ボタンを押す間隔を0.5秒にしているが,もっと短くすれば一周にかかる時間を短くすることが可能,ただしどの程度まで大丈夫かは不明
・setup中のLRボタンを押す回数が何回以上ならいいかは未調査,もっと少なくてもよさそう

おわりに

switch自動化に関する記事が増えてきたため,比較的簡単に実装することができた
今後は,孵化厳選の自動化などに挑戦していきたい

 

6
6
0

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
6
6