arduinoで状態遷移の実装方法を教えてほしいです。

実現したいこと

①スイッチを押すたびにシリアルモニタに出力される内容を変える
②状態を表す変数【state】をボタン押下ごとに変化させる
③添付画像の状態遷移図の青線内のプログラムを関数にしたい

発生している問題・分からないこと

イメージ説明

エラーメッセージ

error

1コンパイルは通りエラーは出ていないのですが 2 3PUSH 4バックルを取り出す 5PUSH 6カードを装填 7 8上記の様にボタンを押下するたびに順々に表示されてほしいのですが実際にボタンを押下すると下記のように 9シリアルモニタに出力されます。 10 11PUSH 12バックルを取り出す 13PUSH 14PUSH 15 162回目以降もボタンの押下は検出されていますがその下に来るはずの文章が出力されなくなってしまいます。 17どこが問題となっているのかを教えていただきたいです。 18### 該当のソースコード 19

//状態の定数
#define BC_A 1//befor_change=BCの状態
#define BC_B 2
#define BC_C 3
#define BC_D 4
#define BC_E 5
#define AC_A 1//変身後の状態
uint8_t state = BC_A ;//現在の状態、変身前の最初を格納しておく

//bc_a~bc_eまでの一本道の処理の関数を用意する
void change_Flow()
{
if(digitalRead(8)==LOW)
{
Serial.println("PUSHED");
delay(1000);
switch(state)
{
case 1:
Serial.println("バックルを取り出す");
state=BC_B;

break; case2: Serial.println("カードを装填"); state=BC_C; break; case3: Serial.println("ベルト出現開始"); state=BC_D; break; case4: Serial.println("ベルト出現停止"); Serial.println("待機音開始"); state=BC_E; break; case5: Serial.println("待機音停止"); Serial.println("変身音声"); state=AC_A; break; } }

}

void setup()
{
// put your setup code here, to run once:
pinMode(9,INPUT_PULLUP);
pinMode(8,INPUT_PULLUP);
pinMode(7,INPUT_PULLUP);
Serial.begin(9600);
Serial.println("BOOT");
}

void loop()
{
change_Flow();
delay(100);
// put your main code here, to run repeatedly:

}

### 試したこと・調べたこと - [x] teratailやGoogle等で検索した - [x] ソースコードを自分なりに変更した - [ ] 知人に聞いた - [ ] その他 ##### 上記の詳細・結果 グーグルでswitch文 状態遷移 などで調べましたが解決法が見つからず今に至ります。 調べ方が悪くリサーチ力も低いのでこうなっていると思います... ### 補足 特になし

コメントを投稿

0 コメント