割り込み

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

attachInterrupt

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

detachInterrupt

概要
attachInterruptで指定した割り込みを解除します。
文法
detatachInterrupt(pin)
パラメータ
pin: ピン番号(2, 6, 11, 12, 24のいずれか)
戻り値
なし

interrupts

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

noInterrupts

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

サンプルプログラム

Pin11の変化で割り込みが発生するサンプルです。


#include <Arduino.h>
int pin = PIN_LED1;
volatile int state = LOW;
void blink()
{
  state = !state;
}
 
void setup()
{
  pinMode(pin, OUTPUT);
  attachInterrupt(11, blink, CHANGE);
}
 
void loop()
{
  digitalWrite(pin, state);
}