MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Arduinoの基礎 - 待機と時間計測のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Arduinoの基礎 - 待機と時間計測
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == Arduinoにおいて、delay関数およびmillis関数は、以下に示すように区別される。<br> <br> * delay関数 *: プログラムの実行を一時停止させる待機関数。 * millis関数 *: 待機時間を計測するための時間計測関数 *: ただし、millis関数は待機を行わない。 <br><br> == delay関数とmillis関数の違い == ==== delay関数のデメリット ==== * ブロッキング処理 *: delay関数を使用する場合、その間は他の処理が一切実行できない。 *: 例えば、delay(1000)を実行する場合は1秒間プログラムが完全に停止する。 *: <br> * マルチタスクの困難さ *: 複数のアニメーションを同時に動かす場合は対応できない。 *: ボタン入力等の他の処理も受け付けられない。 <br> ==== millis関数のメリット ==== * ノンブロッキング処理 <syntaxhighlight lang="c++"> unsigned long previousMillis = 0; const long interval = 1000; // 1秒間隔 void loop() { unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; // アニメーション更新処理 updateAnimation(); } // 他の処理も並行して実行可能 checkButtonPress(); updateOtherAnimations(); } </syntaxhighlight> <br> * 複数のタイミング制御 <syntaxhighlight lang="c++"> unsigned long prevMillisAnim1 = 0; unsigned long prevMillisAnim2 = 0; const long intervalAnim1 = 50; // 50[ms]間隔 const long intervalAnim2 = 100; // 100[ms]間隔 void loop() { unsigned long currentMillis = millis(); // アニメーション1の更新 if (currentMillis - prevMillisAnim1 >= intervalAnim1) { prevMillisAnim1 = currentMillis; updateAnimation1(); } // アニメーション2の更新 if (currentMillis - prevMillisAnim2 >= intervalAnim2) { prevMillisAnim2 = currentMillis; updateAnimation2(); } } </syntaxhighlight> <br> * 正確なタイミング制御 *: delay関数は処理時間による誤差が蓄積されやすい。 *: millis関数は実際の経過時間に基づいて制御することが可能。 <br> 特に、アニメーションや複数の処理を同時に行う場合は、<code>millis</code>関数を使用することが推奨される。<br> <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:Arduino]]
Arduinoの基礎 - 待機と時間計測
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse