NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

Arduino IDE(CurieIMU.getInterruptStatusの使い方)

■CurieIMU.getInterruptStatus関数
 CurieIMU.hライブラリの CurieIMU.getInterruptStatus関数は、選択した機能の割り込みのステータスを返します。

■使用例
 CurieIMU.getInterruptStatus関数を使ったArduinoIDEのプログラム例は図1の通りです。このプログラムを実行すると、最初にCurieIMU.interrupt関数で「CURIE_IMU_FREEFALL」機能の割り込みを有効にします。次にloop関数中でCurieIMU.getInterruptStatus関数により「CURIE_IMU_FREEFALL」機能が「1」(true:Genuino101が落下中)であるのか「0」(false:それ以外)であるのかの状態を取得しシリアルモニタ上に結果を表示します。

#include "CurieIMU.h"

void setup() {
  Serial.begin(9600); // シリアル通信を初期化
  while (!Serial);    // シリアルポートが開くのを待つ
  Serial.println("Initializing IMU device...");
  CurieIMU.begin(); // デバイスの初期化
  CurieIMU.setAccelerometerRange(2); // 加速度計の範囲を2Gに設定する
  CurieIMU.interrupts(CURIE_IMU_FREEFALL);//選択した機能の割り込みを有効にします。
}

void loop() {
  Serial.println(CurieIMU.getInterruptStatus(CURIE_IMU_FREEFALL));
}
イメージ 1
図1:プログラム例
 
イメージ 1 
図2:プログラム実行結果
 

■「CurieIMU.getInterruptsStatus(int feature)」の構文
 feature:状態を確認したい表1に示すいずれかの機能を選択します。
 戻り値:選択された機能に対して割り込みが発生した場合はtrueまたはfalse

表1:feature(機能)
項目 内容
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 データ準備完了の判定
 1:キュー
 キューとは、先に入力したデータが先に出力されるという特徴をもつデータ構造の一種。
 データを入れるときは新しいデータが最後尾につき、データを出すときは一番古いデータが優先して出てくる。
 このように、「最初に入った物が最初に出てくる」というデータの入出力方式は「First In First Out」を略して「FIFO」と呼ばれる。
 キューは何かの処理を待たせる際によく使われる構造で、逆に最後に入力したデータが先に出力されるというデータ構造は、スタックと呼ばれている。
  「CURIE_IMU_FIFO_FULL」と「CURIE_IMU_DATA_READY」について調べたのですが、おそらくジャイロ・加速度センサー(Bosch製BMI160)からCPU(Intel製 IntelCurie)が受け取ったデータの状態を判定する機能ではないかと思います
 

■その他関数
 Curie IMUライブラリに関するその他関数については、コチラをご覧ください。

 

イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【ArduinoIDE reference】目次に戻る