Arduino & IoT Academy · レッスン

ピンでattachInterruptを使う

信号が変化した瞬間にコードを実行します。

レッスン 2/413 ステップ

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

コードをピンに割り当てる

attachInterrupt関数はボードに対して、指定したピンを監視し、信号が変化した瞬間に指定した関数を実行するよう指示します。

対応するピンだけを使う

すべてのピンが割り込みに対応しているわけではありません。Unoでは2 and 3番ピンだけが対応しているため、信号をどちらか一方に接続してください。

ピンを番号に変換する

ピンをdigitalPinToInterruptで囲み、正しい割り込み番号が使われるようにします。これにより、ボードを変えてもコードを移植しやすくなります。

digitalPinToInterrupt(2);

3つの要素

attachInterruptには、監視するピン、実行する関数、そして割り込みを発生させる変化の種類という3つの情報を渡します。

attachInterrupt(digitalPinToInterrupt(2), myISR, RISING);

ハンドラー関数

指定した関数がハンドラーで、ISRとも呼ばれます。これはボードが自動的に呼び出すため、自分で呼び出す必要はありません。

void myISR() {
  flag = true;
}

RISINGエッジ

RISINGを渡すと、ピンがLOWからHIGHへ変化したときに割り込みが発生します。信号が初めてオンになる瞬間などが該当します。📈

FALLINGエッジ

FALLINGを渡すと、ピンがHIGHからLOWへ下がったときに割り込みが発生します。プルアップされたボタンでは、押すとピンがLOWになるため、よくこの設定を使います。

CHANGEモード

CHANGEを渡すと、立ち上がりと立ち下がりのどちらのエッジでも割り込みが発生します。信号のすべての遷移を検出したい場合に便利です。

setup()で設定する

ピンモードを設定した直後に、setup内でattachInterruptを1回呼び出します。それ以降は、監視が自動的に行われます。

pinMode(2, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(2), myISR, FALLING);

ループの負担を軽くする

割り込みを設定すると、loopでそのピンをポーリングする必要がなくなります。選択したエッジが実際に発生したときだけ、ハンドラーが実行されます。

無効にする

監視を停止したい場合は、detachInterruptで割り当てを解除します。ただし、多くのプロジェクトでは一度設定した後、解除することはありません。

detachInterrupt(digitalPinToInterrupt(2));

確認問題

ピンがLOWからHIGHへ変化したときだけ発生するトリガーモードはどれですか?

まとめ

ピン、ハンドラー、RISINGのようなモードを指定してattachInterruptを呼び出す方法を学びました。これで、信号が変化した瞬間にハードウェアがコードを実行します。🎉

無料で開始

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

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

コース
30
レッスン
120

よくある質問

「ピンでattachInterruptを使う」レッスンは無料ですか?

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

「ピンでattachInterruptを使う」で何を学びますか?

信号が変化した瞬間にコードを実行します。 ブラウザで直接実行するハンズオンコードでArduino & IoT Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「ピンでattachInterruptを使う」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. ポーリングと割り込み
  2. ピンでattachInterruptを使う
  3. 安全なISRを書く
  4. エンコーダーのパルスを数える
← Arduino & IoT Academyに戻る