メインコンテンツに移動

割り込み

割り込み

外部端子からの信号で処理する割り込み関数や、割り込み関数の有効、無効を指定するライブラリです。

attachInterrupt

概要

外部端子からの信号に応じて実行する関数を指定します。割り込み0はピン2、割り込み1はピン3に対応しています。呼び出せる関数は引数と戻り値が不要なものだけです。

文法

attachInterrupt(unsigned char interrupt, void(*)(void) func, int mode)

パラメータ

interrupt: 割り込み番号0か1 (0: ピン2、1: ピン3)
function: 割り込み発生時に呼び出す関数
mode: CHANGE(ピンの状態が変化したとき発生)、FALLING(ピンの状態がHIGHからLOWに変化したとき発生)、RISING(ピンの状態がLOWからHIGHに変化したとき発生)

戻り値

なし

補足

modeにLOWは指定できません。指定した場合はCHANGEが指定されます。
割り込み関数実行中は、システム上使用される他の関数が実行されないため、delay()、millis()、Serial()など正常に機能しません。

detachInterrupt

概要

attachInterruptで指定した割り込みを解除します。

文法

detachInterrupt(unsigned char interrupt)

パラメータ

interrupt: 割り込み番号0か1

戻り値

なし

interrupts

概要

noInterruptsで無効にした割り込みを再度許可します。

文法

interrupts()

パラメータ

なし

戻り値

なし

noInterrupts

概要

割り込み処理を禁止します。バックグラウンドで実行する重要なタスクも禁止されるため、どうしてもタイミングを崩したくない処理を行うときに使用してください。

文法

noInterrupts()

パラメータ

なし

戻り値

なし


サンプルプログラム

GR-COTTONのボタンスイッチを押したらLEDが赤く光るサンプル.


        #include <Arduino.h>
        void sw_push(){
          digitalWrite(22, LOW);
          delayMicroseconds(10000); // 10ms
          digitalWrite(22, HIGH);
        }
        void setup() {
          pinMode(2, INPUT_PULLUP);
          attachInterrupt(0, sw_push, FALLING);
            
          pinMode(22, OUTPUT); //red led
          digitalWrite(22, HIGH);
        }
           
        void loop() {
        }