Help us understand the problem. What is going on with this article?

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

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 までお願いします

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした