■CurieIMU.interruptEnabled関数
CurieIMU.hライブラリのCurieIMU.interruptEnabled関数は、選択した機能の割り込みが有効かどうかをtrueまたはfalseで返します。
■使用例
CurieIMU.interruptEnabled関数を使ったArduinoIDEのプログラム例は図1の通りです。このプログラムを実行するとCurieIMU.attachInterrupt関数で、割り込み発生時に実行する関数(今回はTESTと言う名前の関数)を最初に設定します。loop関数中では、下記①と②を繰り返します。①最初にCurieIMU.interrupt関数で「CURIE_IMU_FREEFALL」機能の割り込みを有効にし、CurieIMU.interruptEnabled関数を使い「CURIE_IMU_FREEFALL」機能の現在の状態をシリアルモニタ上に「1」(true:有効)と表示します。その後5秒以内にGenuino101自体が自由落下すると「CURIE_IMU_FREEFALL」機能が働き、図2の様にシリアルモニタ上に「FREEFALL!」と出力します。②次にCurieIMU.noInterrupts関数で「CURIE_IMU_FREEFALL」機能の割り込みを無効にし、CurieIMU.interruptEnabled関数を使い「CURIE_IMU_FREEFALL」機能の現在の状態をシリアルモニタ上に「0」(false:無効)と表示します。その後5秒以内にGenuino101自体が自由落下したとしても「CURIE_IMU_FREEFALL」機能は働かず、シリアルモニタ上に「FREEFALL!」とは出力されなくなります。
#include "CurieIMU.h" void TEST () { Serial.println("FREEFALL!"); } void setup() { Serial.begin(9600); // シリアル通信を初期化 while (!Serial); // シリアルポートが開くのを待つ Serial.println("Initializing IMU device..."); CurieIMU.begin(); // デバイスの初期化 CurieIMU.setAccelerometerRange(2); // 加速度計の範囲を2Gに設定する CurieIMU.attachInterrupt(TEST);//割り込みアクションをアタッチします。 } void loop() { CurieIMU.interrupts(CURIE_IMU_FREEFALL);//選択した機能の割り込みを有効にします。 Serial.println(CurieIMU.interruptsEnabled(CURIE_IMU_FREEFALL)); delay(5000); CurieIMU.noInterrupts(CURIE_IMU_FREEFALL);//選択した機能の割り込みを無効にする。 Serial.println(CurieIMU.interruptsEnabled(CURIE_IMU_FREEFALL)); delay(5000); }
■「CurieIMU.noInterruptsEnabled(int feature)」のパラメータ
feature:割り込みを無効にしたい表1に示すいずれかの機能を指定します。
項目 | 内容 |
CURIE_IMU_FREEFALL | 落下の判定 |
CURIE_IMU_SHOCK | 衝突の判定 |
CURIE_IMU_MOTION | 動くの判定 |
CURIE_IMU_ZERO_MOTION | 止まるの判定 |
CURIE_IMU_STEP | 歩くの判定 |
CURIE_IMU_TAP | 叩くの判定 |
CURIE_IMU_TAP_SHOCK | 強く叩くの判定 |
CURIE_IMU_TAP_QUIET | 弱く叩くの判定 |
CURIE_IMU_DOUBLE_TAP | 二回叩くの判定 |
CURIE_IMU_FIFO_FULL | キュー※1が一杯の判定 |
CURIE_IMU_DATA_READY | データ準備完了の判定 |
■その他関数
Curie IMUライブラリに関するその他関数については、コチラをご覧ください。