見出し画像

Switch自動化の極意 ATmega32U4/leonardo/promicro編

ようやくまとめる気になったので、まとめていきたいと思います。

ATmega32U4とは?という方は以下の記事に特徴などを記載してますので、ぜひご覧ください。

今回はプログラムの作成方法について記載します。プログラム編集環境が整っている方向けとなります。
環境構築をするには、マイコン講座資料をご覧ください。

マイコン講座資料

Arduinoを開くとまずvoid setupとvoid loopがデフォルトで記入されています。まずこの2つの関数の仕様を説明します。

画像4

setup関数

マイコンが起動したとき(switchなどの電源に繋いだ時)に関数内の処理が行われます。

loop関数

setup関数の処理の後に行われます。この関数は名前の通り、関数が終了すると再びloop関数が呼ばれ、関数内の処理が繰り返す状態になります。

プログラムを作ってみる

まずSwitchを動かすためプログラムの一番上でヘッダーファイルを読み込ませます。これを読み込ませないと後述するSwitch操作関数が使えません。

#include <auto_command_util.h>

Swicth操作関数の一部を以下に記載します。
(   )内の数値や文字を変えて、状況に合った入力が可能となります。
以下のプログラム内容をマイコンに書き込んで動かすと、
①500ミリ秒何もしません。
②Aボタンを1回押し、離した後、700ミリ秒待機します。
③十字キーの上を1回押し、離した後、400ミリ秒待機します。
④Aボタンを押します。
⑤1000ミリ秒待機します。
⑥Aボタンを離します。
といった動作になります。

 delay(500);  //500ms(ミリ秒)待機
 pushButton(Button::A, 700, 1);  //A,B,X,Y,R,L,ZR,ZL,MINUS,PLUS,HOME,RCLICK,LCLICK
 pushHatButton(Hat::UP, 400, 1); //UP,DOWN,LEFT,RIGHT LEFT_UP,LEFT_DOWN,RIGHT_UP,RIGHT_DOWN
 SwitchController().pressButton(Button::A);  //ボタンを押す
 delay(1000);
 SwitchController().releaseButton(Button::A);  //ボタンを離す

詳しい関数の扱いはパワーポイントの資料として公開してますので、そちらをご覧ください。

それではさっそく極意へ参りましょう。

極意1 コメント化を活用してプログラム内容をわかりやすくしよう

//コメント(日本語可)

/*
複数行をコメントにする場合
*/

Arduinoでは、//  を文頭に付けることでコメント化と呼ばれる、プログラムとして反映されない状態を作ることができます。
//を付けた部分は日本語を書いてもエラーが出ないのでメモなどに活用していくと良いでしょう。

極意2 マイコン(コントローラ)の認識を考慮しよう

 pushButton(Button::B, 400, 4);  //コントローラーを認識させるために適当にボタンを押す

マイコンはSwicthに接続すると、Swicthからの電力を得て起動し、一時的なコントローラとしてSwicthに認識されます。このとき、接続開始直後はコントローラとして認識されない場合があるので、適当なボタン入力の信号を何回か送ることで確実に認識させることを目的とします。
この処理は接続時のみ行えば良いので、setup関数内で実行させればよいでしょう。

極意3-1 ifを使って動作を分岐させよう

  if (test == 1) {
   pushButton(Button::A, 500, 1);
 }
 else {
   pushButton(Button::B, 500, 1);
 }

if文というのを使用します。
if文は(   )内の条件式を満たすと{    }内の処理が行われます。この性質を利用して、処理を分岐させることができます。
上記の例を説明します。
・変数testが1のとき、Aボタンを1回押し、離した後、500ミリ秒待機します。
・変数testが1以外のときは、Bボタンを1回押し、離した後、500ミリ秒待機します。
以上のどちらかが処理されます。

極意3-2 定数を定義して動作の書き換えを簡単にしよう

//定数(変数の中身を変更できない)を定義
const int test = 1;

  if (test == 1) {
   pushButton(Button::A, 500, 1);
 }
 else {
   pushButton(Button::B, 500, 1);
 }

変数testを定数として定義しています。
定数とは、中身の変えることのできない変数のことです。
中身の書き換えはできませんが、読み込みはできるので、この数値を参照して、動作の分岐に活用しています。
このようにプログラムを制作することで、簡単な数値の書き換えのみで、動作を変更することができます。

今回の内容をある程度まとめたプログラムファイルを用意しました。ご活用ください。

マイコンへの書き込み方

タイトルにあるATmega32U4/leonardo/promicroというのは実はどれも書き込む際は、
ツール→ボード
からArduino Leonardoを選択して書き込むことができます。

画像3

ボードでArduino Leonardoを選択した後、

画像3

スケッチ→マイコンを書き込むをクリックすることでマイコンに書き込めます。もちろんマイコンをパソコンに接続してからの操作になります。

プログラムチェックを書き込む前に行う

スケッチ→検証・コンパイルでプログラムミスがないかチェックしてくれます。

画像4


最後に

Swicth自動化プログラムを作成していくには、まず動かしてみるが最も良いです。頭で考えるより早く確認ができます。
また、Arduinoのリファレンスを読んでみましょう。新しい発見があるかもしれません。

それでは、また🙌

☆---------------------------------------------------------------------------------☆
お問い合わせはTwitterのDMまで
https://twitter.com/kochatece12

こちゃてすプログラム置き場
(ポケモン剣盾、モンハンライズのプログラムを配布しています!)

Amazonほしいものリスト

☆---------------------------------------------------------------------------------☆



この記事が気に入ったらサポートをしてみませんか?