電子書籍の厳選無料作品が豊富!

プログラミングについて質問があり投稿させていただきました。
現在考えているのが0~4秒の間はAの作業を実行、5~8秒の間はBの作業を実行。
8秒を経過したあとはまた0から数え始めAに戻るといったものが作りたいです。
for文を使い時間を定義、if文で制御を行うところまでは分かるのですが肝心の書き込み方が分かりません。
助けてくださいお願いします。

質問者からの補足コメント

  • Arduino UNOを使用しています

      補足日時:2022/01/09 18:09

A 回答 (3件)

Aの作業が4秒以下で完了するとき、例えば、2秒で完了したとき残りの2秒は無駄な待ち時間になりませんか


Aの作業が4秒以上かかるとき、例えば、6秒かかる作業なら、4秒で中断してBの作業に移行して、その作業が完了してから、またAの作業の続きになると、作業の効率が格段に落ちますね。

時間で制御せず、Aのサブルーチンが終わったら、Bのサブルーチンを実行。それを繰り返すだけの方がプログラムしシンプルになるし、処理速度も向上しそうな気がします。

もし、数秒の時間でAとBの処理を同時に進めたければ、AとBの処理をA1、A2、A3、B1、B2、B3のように分割してA1→B1→A2→B2→A3→B3→あとは繰り返しという形のする方が良くないですか。プログラムに条件判断やループを入れれば入れるほど処理速度は格段に落ちていくと思います。
    • good
    • 0

A,Bの作業は短時間の細切れ作業を繰り返し実行する構造になっていますか? 例えば一つが10ミリ秒くらいで終わる作業をそれぞれ1万回実行するような構造なら、1つ終わるごとに現在の時間をチェックしてAないしBの次の作業を呼び出すような実装が可能です。

これならforループとif文だけで実装できるでしょう。
そうでなくてA,Bの作業がそれぞれ連続した100秒ほど掛かる作業で、それを途中で止めて切り換えるという話なら、これは自作のタスクスケジューラを作ることになります。タイマ割込で作業を止めてタスクを切り換えるという話になるので、書き方は実装言語とOS次第です。
    • good
    • 0

こんばんは。



回答ではありませんが、
プログラミングとの事ですが、プログラム言語は何でしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!