基本ライブラリ
デジタルIO
アナログIO
拡張IO
時間
数学
三角関数
乱数
ビットバイト操作
割り込み
シリアル通信
標準ライブラリ
Ethernet
サーボモーター
ステッピングモーター
キャラクタ液晶表示
SPI通信
I2C通信(Wire)
SD
SD(File操作)
周期処理(MsTimer2)
時計(RTC)
PPG(パルス生成)
WiFiEsp
ICS(シリアルサーボ)
FreeRTOS Tips
割り込み
外部端子の状態で割り込み処理をするためのライブラリです。
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);
}