LoginSignup
0
0

More than 3 years have passed since last update.

【ポケモン剣盾】Arduinoを用いた旧式自動ワット

Last updated at Posted at 2020-02-12

0.はじめに

・某掲示板ではArduinoを使用する方法はマイノリティとなっております。なのでArduino IDEを用いて作成したポケモン剣盾自動化プログラムを個人的なメモ書き程度ですがテンプレートの1つになればと思い投稿させて頂きます

・マイコンの導入方法に関しては既に多くの方が分かりやすく説明されてますので省略します

1.概要

ポケモン剣盾自動化の基本中の基本、自動ワット回収のランクマバグを使用しない方式です。
なんで今更旧式なの?って感じですが万一バグが修正された時やWi-Fi環境が無い時に使えます。あと記事が少なくて寂しいから。
スピードはそこまで詰めてません。

◯使用方法

・巣の目の前で開始
・開始時のワットの回収の有無は影響しないので気にしないで大丈夫です

2.スケッチ

#include <SwitchControlLibrary.h>

//起動直後のズレ回避
void setup(){
  PressButtonR();
  PressButtonR();
  PressButtonR();
}

void loop() {
//巣の目の前で開始
  PressButtonA();
  delay(450);
  PressButtonA();
  delay(350);
  PressButtonA();
  delay(350);

//みんなで挑戦の直前
  PressButtonA();
  delay(1950);
//時間変更
  PressButtonHome();
  MoveHat(4); // down
  delay(25);
  MoveHat(2); // right
  delay(25);
  MoveHat(2); // right
  delay(25);
  MoveHat(2); // right
  delay(25);
  MoveHat(2); // right
  delay(25);
  PressButtonA();
  delay(800);
  // 設定画面
  SwitchControlLibrary().MoveHat(4); // down
  delay(1300);
  SwitchControlLibrary().MoveHat(8); // center
  delay(50);

  MoveHat(2); // right
  MoveHat(4); // down
  MoveHat(4); // down
  MoveHat(4); // down
  MoveHat(4); // down
  PressButtonA();
  delay(210);
  // 時間設定
  MoveHat(4); // down
  MoveHat(4); // down
  PressButtonA();
  delay(250);
  // 時間の変更 進める
  MoveHat(2); // right
  MoveHat(2); // right
  MoveHat(0); // up
  delay(60);
  PressButtonA();
  PressButtonA();
  PressButtonA();
  PressButtonA();
  delay(75);
  PressButtonHome();
  delay(350);
  PressButtonA();
  delay(750);
  PressButtonB();
  delay(650);
  PressButtonA();
  delay(2950);
  PressButtonA();
  delay(950);

}



// 以下省略用

//十字キーdelay(50)
void MoveHat(int direction){

  SwitchControlLibrary().MoveHat(direction);
  delay(50);
  SwitchControlLibrary().MoveHat(8);
  delay(50);
}

//Aボタン
void PressButtonA(){
  SwitchControlLibrary().PressButtonA();
  delay(50);
  SwitchControlLibrary().ReleaseButtonA();
  delay(50);
}

//Bボタン
void PressButtonB(){
  SwitchControlLibrary().PressButtonB();
  delay(50);
  SwitchControlLibrary().ReleaseButtonB();
  delay(50);
}

//Rボタン
void PressButtonR(){
  SwitchControlLibrary().PressButtonR();
  delay(500);
  SwitchControlLibrary().ReleaseButtonR();
  delay(500);
}

//Homeボタン
void PressButtonHome(){
  SwitchControlLibrary().PressButtonHome();
  delay(50);
  SwitchControlLibrary().ReleaseButtonHome();
  delay(400);
}


3.一応解説

手動で行う無限ワットをそのままマクロにしただけですね、特に説明することはありませんが一点だけ。

31日→1日はワットが復活しないので復活しない分Aボタンが余ってしまいますが、"みんなで挑戦"のところは待機時間が長く、そのタイミングでAボタンが空撃ちされてます。なのでその日にワットの回収はできませんがループは崩れません。

一応ループ回数指定すれば対処は可能ですが、月日を気にせず回収開始できるのはそれなりにメリットだと思うのでこのままで十分かなと思います。決して面倒だった訳ではありません

ボタンを押して離す動作をまとめて短くしてありますので、delayを調整する際はソースコード下部を参考にしてください。

◯参考

ワットの時給は46万/h程度となってます
delayを調整すればもっと早くなります

4.おわりに

発売直後に自動化が流行り始め真っ先に自動化されたのがこの旧式自動ワットでしたね(多分)。既に出尽くしてるような気もしますが、これから始めたいって方もいらっしゃると思います。そんな時にこの記事が1つの参考になれば幸いです。

この記事を開いてくれた方、最後まで読んでくれた方、ありがとうございました。

何か御座いましたらコメント欄、もしくはTwitter @mega_ringuma までお願いします

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