質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

1回答

691閲覧

switch文からswitch文へ

king_sho

総合スコア0

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2020/06/28 18:51

編集2020/06/28 18:51

sw_pinを長押ししたらswitch文から他に作ったswitch文へ入り再びsw_pinを長押ししたらもとのswitch文へ戻るようにしたいのですが、
どうしてもswitch文へ入れたとしても一瞬で元のswitch文へ強制的に戻ってしまうのですがどうしたら滞在?のようなことできますか?
長押し単押しなどのスケッチはできます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2020/06/28 19:12

> 一瞬で元のswitch文へ強制的に戻ってしまうのですが 状況が良くわかりませんが、C言語/C++の制御構造の話だと仮定して、loop関数の中の話だと、「状態変数」のようなものを設け、状態に応じた処理を呼ぶようなかたちにすれば滞在(?)せずとも要望の動きを実現できる気がします。loop関数の中で滞在するのはあまり良いかたちではない気が。(<やってやれない気もしますが) 現状のコードを提示すると、よりよい回答がいただけると思います。
guest

回答1

0

arduinoでswitch文からswitch文...もしかしてこちらと同じ方でしょうか。だとしたら結構長く考えているのですね。

一般論からいうと、「滞在のようなこと」はしないほうがいいです。そこに滞在している間、他の仕事は一切出来ない羽目になることが多く、あまり良いプログラムにならない可能性が出てきます。もちろん、あなたの作りたいものにとってはそんなのは全く問題ないのかも知れませんがしかし、どうせならいろんな場合に通用するパターンで作れるようになった方がベターじゃないですかね。

といいつつ「滞在」するなら

Arduino

1switch(){ 2case X: 3 switch(){ 4 case Y: 5 do{ 6 ボタン押し検出 7 while(検出結果が長押しでない); //ここで長押しするまで滞在する 8 break; 9 } 10 break; 11}

こんな構造でどうでしょう。

ボタン押し検出は例えば

Arduino

1unsigned long t0=millis();//「開始時刻」を記録しておく 2int result=NO_PUSH; //NO_PUSHは押されていないことに相当する定数 3while(digitalRead(BUTTON)==LOW); //負論理として、ボタンが押されている間ここに留まる 4if(millis()-t0>THRESHOLD){ //経過時間はどうだったか? THRESHOLDは長押しと認識するまでの時間 5 result=PUSHED_LONG; //PUSHED_LONGは長押しに相当する定数 6}

とか。

投稿2020/06/28 22:57

thkana

総合スコア7639

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

king_sho

2020/07/11 09:54

実際私がやりたいことはこのようなことですhttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13209805938?fr=ios_other
thkana

2020/07/11 11:06

では、知恵袋の方でそれは解決しているわけですね? https://teratail.com/help#posted-otherservice の意図を汲むならば、こちらに解決方法を記すのがあなたの仕事かと思いますが。 (あちこちに質問ばらまいて、回答している人は結局同じだったりして...)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問