基本ライブラリ
デジタルIO
アナログIO
拡張IO
時間
数学
三角関数
乱数
ビットバイト操作
割り込み
シリアル通信
標準ライブラリ
サーボモーター
キャラクタ液晶表示
SPI通信
I2C通信(Wire)
メモリカード
メモリカード(File操作)
周期処理(MsTimer2)
時計(RTC)
割り込み
外部端子の状態で割り込み処理をするためのライブラリです。
attachInterrupt
- 概要
- 外部端子からの信号に応じて実行する関数を指定します。
- 文法
- attachInterrupt(pin, void(*)(void) func, mode)
- パラメータ
- pin: 割り込み番号(ピンマップのIntXのXの部分)
func: 割り込み発生時に呼び出す関数
mode:
LOW(ピンがLOWになったとき発生)
CHANGE(ピンの状態が変化したとき発生)
FALLING(ピンの状態がHIGHからLOWに変化したとき発生)
RISING(ピンの状態がLOWからHIGHに変化したとき発生) - 戻り値
- なし
detachInterrupt
- 概要
- attachInterruptで指定した割り込みを解除します。
- 文法
- detatachInterrupt(pin)
- パラメータ
- pin: 割り込み番号(ピンマップのIntXのXの部分)
- 戻り値
- なし
interrupts
- 概要
- noInterruptsで無効にした割り込みを再度許可します。
- 文法
- interrupts()
- パラメータ
- なし
- 戻り値
- なし
noInterrupts
- 概要
- 割り込み処理を禁止します。バックグラウンドで実行する重要なタスクも禁止されるため、どうしてもタイミングを崩したくない処理を行うときに使用してください。
- 文法
- noInterrupts()
- パラメータ
- なし
- 戻り値
- なし
サンプルプログラム
ピン0の状態が変化すると割り込みが発生し、LEDを状態を変えます。
#include <Arduino.h>
int ledpin = PIN_LED0;
int intpin = 1;
bool state = LOW;
void blink()
{
state = !state;
}
void setup()
{
pinMode(ledpin, OUTPUT);
pinMode(intpin, INPUT_PULLUP);
attachInterrupt(0, blink, CHANGE);
}
void loop()
{
digitalWrite(ledpin, state);
}