割り込み

外部端子の状態で割り込み処理をするためのライブラリです。

attachInterrupt

概要
外部端子からの信号に応じて実行する関数を指定します。
文法
attachInterrupt(num, void(*)(void) func, mode)
パラメータ
num: 割り込み番号(ピンマップのIntXのXの部分)
func: 割り込み発生時に呼び出す関数
mode:
LOW(ピンがLOWになったとき発生)
CHANGE(ピンの状態が変化したとき発生)
FALLING(ピンの状態がHIGHからLOWに変化したとき発生)
RISING(ピンの状態がLOWからHIGHに変化したとき発生)
戻り値
なし

detachInterrupt

概要
attachInterruptで指定した割り込みを解除します。
文法
detachInterrupt(num)
パラメータ
num: 割り込み番号(ピンマップのIntXのXの部分)
戻り値
なし

interrupts

概要
noInterruptsで無効にした割り込みを再度許可します。
文法
interrupts()
パラメータ
なし
戻り値
なし

noInterrupts

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

サンプルプログラム

SW0(Int4)を押すと割り込みが発生するサンプルです。


#include <Arduino.h>
#define INTERRUPT_PIN PIN_SW0
#define INTERRUPT_NUM 4
 
void ext_interrupt(){
    digitalWrite(PIN_LED_RED, !digitalRead(INTERRUPT_PIN));
}
 
void setup() {
    Serial.begin(9600); // for PC
 
    pinMode(PIN_LED_RED, OUTPUT);
    digitalWrite(PIN_LED_RED, LOW);
 
    pinMode(INTERRUPT_PIN, INPUT);
    attachInterrupt(INTERRUPT_NUM, ext_interrupt, CHANGE);
}
 
void loop(){
}