Arduino & IoT Academy · レッスン

2つの処理を同時に実行する

LEDを点滅させながら同時にボタンを読み取ります。

レッスン 4/413 ステップ

「2つの処理を同時に実行する」はCoddyKit上の無料Arduino & IoT Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはArduino & IoT Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Arduino & IoT Academyコースには全4レッスンが含まれています。

マルチタスクの理想

実際のデバイスは、ボタンを監視しながらライトを点滅させるなど、複数の処理を同時に行います。ノンブロッキングなタイミング処理によって、ボードでも両方を扱えるようになります。

各タスクにタイマーを割り当てる

コツは、タスクごとにタイマーを1つ用意することです。点滅専用のpreviousMillisとintervalを用意し、ほかの処理から分けます。

時間を個別に管理する

LED専用のpreviousMillisを用意し、そのスケジュールが同じloop内のほかの時間指定処理と混ざらないようにします。

unsigned long ledPrevious = 0;
const long ledInterval = 500;

点滅ブロック

まず点滅ブロックが専用のタイマーを確認します。500ミリ秒が経過するとLEDを切り替えてリセットし、その後、次の処理へ進みます。

if (millis() - ledPrevious >= ledInterval) {
  ledPrevious = millis();
}

毎回のloopでボタンを読む

点滅ブロックの直後に、毎回のloopでボタンを読み取ります。処理が停止しないため、押下を見逃すことはありません。

int state = digitalRead(buttonPin);

2つの処理を1つのloopで

これで同じloopが、点滅のタイミングを測りながらボタンも1秒に何千回も確認します。2つの処理が同時に行われているように見えます。

3つ目のタスクを追加する

さらに処理を増やしたい場合は、別のタイマーとブロックを追加するだけです。たとえば2秒ごとにセンサーを読み取れます。このパターンは多くのタスクに無理なく拡張できます。

loopを高速に保つ

動作させるためのルールは、決してブロックしないことです。loopの各処理を短く保ち、頻繁に戻れるようにして、すべてのタスクを公平に処理します。

真の並列処理ではない

ボードは依然として一度に1つの処理だけを行っています。ただし非常に高速です。これは協調型マルチタスクで、各タスクが少しずつ処理してから制御を譲ります。

長いdelayをなくす

どこかに長いdelayが1つあるだけで、すべてのタスクが停止するため、この同時処理のような動きが崩れます。待機の代わりにmillisのチェックを使い、滑らかに動かしましょう。

反応性の高いIoTの中心

この状態機械のスタイル、つまり1つのloop内で多くの小さな時間チェックを行う方法が、反応性の高いセンサー、ディスプレイ、接続デバイスの実際の作り方です。

確認問題

1つのloopでLEDを点滅させながらボタンを読み取れるのはなぜでしょうか。

まとめ

1つのloopに複数のタイマーを組み合わせてマルチタスクを実現しました。ブロッキングするdelayを使わず、点滅とボタンの読み取りを同時に行えます。これが実際のIoTデバイスの基礎となるスキルです。🚀

無料で開始

AI チューターと学ぶ C++ — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「2つの処理を同時に実行する」レッスンは無料ですか?

はい。「2つの処理を同時に実行する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Arduino & IoT Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Arduino & IoT Academyコースには全4レッスンが含まれています。

「2つの処理を同時に実行する」で何を学びますか?

LEDを点滅させながら同時にボタンを読み取ります。 ブラウザで直接実行するハンズオンコードでArduino & IoT Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Arduino & IoT Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのArduino & IoT Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「2つの処理を同時に実行する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このArduino & IoT Academyレッスンでコードを書いて実行できますか?

はい。すべてのArduino & IoT Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Arduinoのint、float、bool
  2. delay()ですべてが停止する理由
  3. millisでdelayなしに点滅させる
  4. 2つの処理を同時に実行する
← Arduino & IoT Academyに戻る