delay()ですべてが停止する理由
一時停止するとボードが反応できなくなる仕組みを確認します。
「delay()ですべてが停止する理由」はCoddyKit上の無料Arduino & IoT Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはArduino & IoT Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Arduino & IoT Academyコースには全4レッスンが含まれています。
簡単な一時停止
delay関数は、指定したミリ秒の間スケッチを一時停止します。処理を遅くして、点滅を見えるようにする最も簡単な方法です。
delay(1000);1000の意味
delay(1000)は、値の単位がミリ秒なので、1秒間待機します。つまりdelay(500)は0.5秒、delay(2000)は2秒です。
ボードが停止する
注意点は、delayがすべての処理を停止させることです。待機中、ボードは息を止めた人のように、ほかの処理をまったく行いません。😮
ボタン入力を見逃す
delay中は、ボードがボタンの押下を検知できません。一時停止中に押すと、その入力は完全に無視されるため、利用者には壊れているように感じられます。
問題を確認する
ここではチェックの間に1秒間のdelayがあるため、その1秒間に押されたボタンは、次の読み取りが行われる前にすべて失われます。
digitalRead(buttonPin);
delay(1000);一度に1つのタスクだけ
delayは処理をブロックするため、LEDを点滅させながら同時にセンサーを監視することはできません。スケッチ全体が1つのタスクとして待機します。
delayを重ねると時間が加算される
delayを2回続けて呼び出すと、待機時間は単純に加算されます。あちこちに配置すると、ボードは動作しないまま時間の大半を過ごすことになります。
単純なスケッチなら問題ない
delayは悪いものではありません。ほかに処理がなく、LEDを1つ点滅させるだけなら、わかりやすく、問題なく使えます。
本当の目標
本当の目標は、イベントのタイミングを測りながら反応し続けるノンブロッキングなスケッチです。そのため、長い一時停止でloopを止めてはいけません。
代わりに時間を考える
一時停止する代わりに、どれだけ時間が経過したかを確認し、十分な時間が経ったときだけ処理を実行できます。その間もloopは動き続けます。
よりよいツールが登場します
まもなく、停止せずに経過時間を測定できる時計、millisを学びます。実際のプロジェクトが反応し続けられるのは、この仕組みのおかげです。
確認問題
スケッチでdelayを使う主な欠点は何でしょうか。
まとめ
delayは簡単ですが、ボードを停止させるため、入力を見逃し、ほかのタスクをブロックすることがわかりました。次はloopを止めずにイベントのタイミングを測ります。✨
よくある質問
「delay()ですべてが停止する理由」レッスンは無料ですか?
はい。「delay()ですべてが停止する理由」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Arduino & IoT Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Arduino & IoT Academyコースには全4レッスンが含まれています。
「delay()ですべてが停止する理由」で何を学びますか?
一時停止するとボードが反応できなくなる仕組みを確認します。 ブラウザで直接実行するハンズオンコードでArduino & IoT Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Arduino & IoT Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのArduino & IoT Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「delay()ですべてが停止する理由」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このArduino & IoT Academyレッスンでコードを書いて実行できますか?
はい。すべてのArduino & IoT Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Arduinoのint、float、bool
- delay()ですべてが停止する理由
- millisでdelayなしに点滅させる
- 2つの処理を同時に実行する