2つの処理を同時に実行する
LEDを点滅させながら同時にボタンを読み取ります。
「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フィードバックを取得できます。ローカル設定は不要です。