基本ライブラリ
デジタルIO
アナログIO
拡張IO
時間
数学
三角関数
乱数
ビットバイト操作
割り込み
シリアル通信
標準ライブラリ
サーボモーター
ステッピングモーター
キャラクタ液晶表示
EEPROM
SPI通信
I2C通信(Wire)
メモリカード
メモリカード(File操作)
Ethernet
Ethernetサーバー
Ethernetクライアント
Firmata
周期処理
省電力
時計(RTC)
SoftwareSerial
ユーティリティ
割り込み
外部端子からの信号で処理する割り込み関数や、割り込み関数の有効、無効を指定するライブラリです。
GR-ADZUKIではピン2, ピン3がボタンスイッチに割り当たっており、押したときに割込みを発生することができます。
attachInterrupt
概要
外部端子からの信号に応じて実行する関数を指定します。割り込み0はピン2、割り込み1はピン3に対応しています。呼び出せる関数は引数と戻り値が不要なものだけです。
文法
attachInterrupt(unsigned char interrupt, void(*)(void) func, int mode)
パラメータ
interrupt: 割り込み番号0か1か2 (0: ピン2、1: ピン3、2:ピン25)
function: 割り込み発生時に呼び出す関数
mode: CHANGE(ピンの状態が変化したとき発生)、FALLING(ピンの状態がHIGHからLOWに変化したとき発生)、RISING(ピンの状態がLOWからHIGHに変化したとき発生)戻り値
なし
補足
modeにLOWは指定できません。指定した場合はCHANGEが指定されます。
割り込み関数実行中は、割込み禁止状態となり、システム上使用される他の関数が実行されないため、delay()、millis()、Serial()など正常に機能しません。割込み処理の先頭でinterrupts()を実行すれば回避できます。
detachInterrupt
概要
attachInterruptで指定した割り込みを解除します。
文法
detachInterrupt(unsigned char interrupt)
パラメータ
interrupt: 割り込み番号0か1
戻り値
なし
interrupts
概要
noInterruptsで無効にした割り込みを再度許可します。
文法
interrupts()
パラメータ
なし
戻り値
なし
noInterrupts
概要
割り込み処理を禁止します。バックグラウンドで実行する重要なタスクも禁止されるため、どうしてもタイミングを崩したくない処理を行うときに使用してください。
文法
noInterrupts()
パラメータ
なし
戻り値
なし
サンプルプログラム
GR-ADZUKIのボタンスイッチを押したらLEDが赤く光るサンプル.
#include <Arduino.h>
void sw1_push(){
digitalWrite(12, HIGH);
delayMicroseconds(100000); // 100ms
digitalWrite(12, LOW);
}
void sw2_push(){
digitalWrite(13, HIGH);
delayMicroseconds(100000); // 100ms
digitalWrite(13, LOW);
}
void setup() {
pinMode(3, INPUT_PULLUP); // for sw1
pinMode(2, INPUT_PULLUP); // for sw2
attachInterrupt(1, sw1_push, FALLING);
attachInterrupt(0, sw2_push, FALLING);
pinMode(12, OUTPUT);
digitalWrite(12, LOW);
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
}
void loop() {
}