NOBのArduino日記!

NOBのArduino日記!

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

Arduino IDE(CurieIMU.setDetectionDurationの使い方)

■CurieIMU.setDetectionDuration関数
 CurieIMU.hライブラリの CurieIMU.setDetectionDuration関数は、検出時間の値を設定します。

■使用例
 CurieIMU.setDetectionDuration関数を使ったArduinoIDEのプログラム例は図1の通りです。このプログラムを実行すると指定した機能に任意の検出時間をms単位で設定し、その値を図2の様にシリアルモニタ上に出力します。

#include "CurieIMU.h"

void setup() {
  Serial.begin(9600); // シリアル通信を初期化
  while (!Serial);    // シリアルポートが開くのを待つ

  // デバイスの初期化
  Serial.println("Initializing IMU device...");
  CurieIMU.begin();

  // 加速度計の範囲を2Gに設定する
  CurieIMU.setAccelerometerRange(2);

  // 機能の検出時間を設定する
  CurieIMU.setDetectionDuration(CURIE_IMU_DOUBLE_TAP, 500);
  CurieIMU.setDetectionDuration(CURIE_IMU_ZERO_MOTION, 2.56);
}

void loop() {
  float ax, ay, az;   //スケールされた加速度計の値

  // デバイスからの加速度計測定値を設定された範囲にスケール
  CurieIMU.readAccelerometerScaled(ax, ay, az);

  // タブで区切られた加速度計のx / y / z値を表示する
  Serial.print("getDetectionDuration_CURIE_IMU_DOUBLE_TAP:");
  Serial.print(CurieIMU.getDetectionDuration(CURIE_IMU_DOUBLE_TAP));
  Serial.println("ms");
  Serial.print("getDetectionDuration_CURIE_IMU_ZERO_MOTION:");
  Serial.print(CurieIMU.getDetectionDuration(CURIE_IMU_ZERO_MOTION));
  Serial.println("ms");
  delay(5000);
}
イメージ 1
図1:プログラム例

 

イメージ 1
図2:プログラム実行結果
 
■「CurieIMU.setDetectionDuration(feature,value)」のパラメータ
 feature:検出時間を取得したい表1に示すいずれかの機能を指定します。
表1:feature(機能)
項目 内容
CURIE_IMU_FREEFALL 落下の判定
CURIE_IMU_SHOCK 衝突の判定
CURIE_IMU_MOTION 動くの判定
CURIE_IMU_ZERO_MOTION  止まるの判定
CURIE_IMU_TAP 叩くの判定
  
 value:各機能に設定する値。
    一部の機能では、表2のような特定の値のセットが許可されます。
 
表2:各機能とその設定値
機能 内容 設定値
CURIE_IMU
_FREEFALL
 割り込みをトリガーするために連続して0gの読み取り間隔 2.5〜637.5ms、2.5msステップ
CURIE_IMU
_SHOCK
割り込みを起動するのに必要なショック(高グラム)状態の持続時間;この期間中、high-gの符号は変化してはならない。 50,75ms
CURIE_IMU
_MOTION
しきい値が割り込みをトリガするために超えなければならない連続したサンプルの数。サンプルに対応する時間を取得するには、それらをサンプリングレートで割ります。計算された値は秒単位です。 1から4まで
CURIE_IMU
_ZERO_MOTION
3軸のいずれかで読ん加速度が割り込みを活性化するために、トリガレベル以下にとどまらなければならない時間の量。この値は6ビットとして格納され、1.28,5.12または10.24秒の倍率で使用されます。 1.28、2.56、3.84、5.12、6.40、7.68、8.96、10.24、11.52、12.80、14.08、15.36、16.64、17.92、19.20、20.48、25.60、30.72、35.84、40.96、46.08、51.20、56.32、61.44、66.56、 71.68、76.80、81.92、87.04、92.16、97.28、102.40、112.64、122.88、133.12、143.36、153.60、163.84、174.08、184.32、194.56、204.80、215.04、225.28、235.52、245.76、256.00、266.24、276.48、286.72、 296.96、307.20、317.44、327.68、337.92、348.16、358.40、368.64、378.88、389.12、399.36、409.60、419.84、430.08 S
CURIE_IMU
_DOUBLE_TAP
2番目のタップを読み込むための待機ウィンドウ 50,100,150,200,250,275,500,700ms
CURIE_IMU
_TAP_SHOCK
設定されたしきい値を超えて、フィジカルショッキングイベントが発生して割り込みをトリガする時間。 50,75ms
CURIE_IMU
_TAP_QUIET
2つのタップを分離するために加速度の読み値を低く保つべき時間。 20,30ms
 
■その他関数
 Curie IMUライブラリに関するその他関数については、コチラをご覧ください。
 

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

↩【ArduinoIDE reference】目次に戻る