見出し画像

マイコン自動化 実行プログラムをボタン選択する方法

メモです。
Arduino Leonardoです。

違うプログラムを実行するのに毎回パソコン起動するのが面倒でボタン導入しました。

複数のサイトを参考にしましたが数年前で忘れました。

ボタンのコードは同じ列のGENと7に挿しています。GENは固定で7は他でも可。

ボタンとかコードとかは安物で工作してます。見た目を気にする人はちゃんとしたものを買ってください。

こんなん。

#include <auto_command_util.h>

const int DIN_PIN = 7;//コードを挿す場所
const int LED_PIN = 13;//基盤のLEDが接続されてる場所
int MenuNum = 0;//どのプログラムを実行するか
int PushCheck = 0;//ボタン未入力状態を確認するのに使用


//LET点滅
void Lchika(){
  digitalWrite( LED_PIN, HIGH );
  delay(100);
  digitalWrite( LED_PIN, LOW );
  delay(100);
  digitalWrite( LED_PIN, HIGH );
  delay(100);
  digitalWrite( LED_PIN, LOW );
  delay(100);
}

//ボタン入力回数をカウントする関数
int pushCount(int a){
  Lchika();//わかりやすいようにカウント受付前にLED2回点滅
  //カウント開始。約3秒入力がないとカウント数を返して終了
  for(PushCheck=0;PushCheck<20;PushCheck++){
    //HIGH=押していない.LOW=押している
    if(digitalRead( DIN_PIN ) == LOW){
      a=a+1;
      PushCheck=0;
      while(digitalRead( DIN_PIN ) == LOW){//押している間LED光る
        digitalWrite( LED_PIN, HIGH );
        delay(60);
      }
      digitalWrite( LED_PIN, LOW );//LED消える
    }
    delay(150);
  }
  return a;
}

void setup() {
//なんか初期設定的なものだった気がする
  pinMode( DIN_PIN, INPUT_PULLUP );
  pinMode( LED_PIN, OUTPUT );

  pushButton(Button::ZL, 500, 5);//switchに認識させる為に無駄打ちをしておく

  //プログラム選択。約3秒間入力がないと選択プログラム開始
  MenuNum=pushCount(0);

  //0.A連打
  //1.XA連打で連続どうぐプリント

}


void loop() {
  if(MenuNum==0){//0.A連打
    while(1){
      pushButton(Button::A, 300);
    }
  }
  if(MenuNum==1){//1.XA連打で連続どうぐプリント
    while(1){
      SwitchController().pressButton(X);
      SwitchController().pressButton(A);
      delay(500);
      SwitchController().releaseButton(X);
      SwitchController().releaseButton(A);
      delay(500);
    }
  }
  //プログラムを増やす場合は  else if(MenuNum==n){ ~ }で追加する*関数はloopの外
  //ループするものはwhile(1){ ~ }で括ること
  
  while(1){ //該当プログラムがない場合はLED2回点滅を3秒毎に繰り返す
    Lchika();
    delay(3000);
  }

}

剣盾時代20個くらい入れてても大丈夫でした。
応用してタマゴ孵化プログラム選択後、ボタン入力でBOX数やサイクル数選択とかもできます。全部貼ると長くなるのでわかる人はやってね、ってくらいです。

では。


いいなと思ったら応援しよう!