NOBのArduino日記!

NOBのArduino日記!

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

Arduino IDE(CurieIMU.setDetectionThresholdの使い方)

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

■使用例
 CurieIMU.setDetectionThreshold関数を使ったArduinoIDEのプログラム例は図1の通りです。
 このプログラムを実行すると「落下」「衝突」「動く」「止まる」「叩く」の動作を判定する機能の閾値をmg単位で設定し、その値を図2の様にシリアルモニタ上に出力します。

#include "CurieIMU.h"

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

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

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

  // 各機能の検出閾値の値を設定
  CurieIMU.setDetectionThreshold(CURIE_IMU_FREEFALL, 11.72);
  CurieIMU.setDetectionThreshold(CURIE_IMU_SHOCK, 11.72);
  CurieIMU.setDetectionThreshold(CURIE_IMU_MOTION, 3.91);
  CurieIMU.setDetectionThreshold(CURIE_IMU_ZERO_MOTION, 3.91);
  CurieIMU.setDetectionThreshold(CURIE_IMU_TAP, 93.75);
}

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

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

  // タブで区切られた加速度計のx / y / z値を表示する
  Serial.print("getDetectionThreshold_FREEFALL:");
  Serial.print(CurieIMU.getDetectionThreshold(CURIE_IMU_FREEFALL));
  Serial.println("mg");
  Serial.print("getDetectionThreshold_SHOCK:");
  Serial.print(CurieIMU.getDetectionThreshold(CURIE_IMU_SHOCK));
  Serial.println("mg");
  Serial.print("getDetectionThreshold_MOTION:");
  Serial.print(CurieIMU.getDetectionThreshold(CURIE_IMU_MOTION));
  Serial.println("mg");
  Serial.print("getDetectionThreshold_ZERO_MOTION:");
  Serial.print(CurieIMU.getDetectionThreshold(CURIE_IMU_ZERO_MOTION));
  Serial.println("mg");
  Serial.print("getDetectionThreshold_TAP:");
  Serial.print(CurieIMU.getDetectionThreshold(CURIE_IMU_TAP));
  Serial.println("mg");
  delay(5000);
}
イメージ 1
図1:プログラム例
 
イメージ 1 
図2:プログラム実行結果
 

■「CurieIMU.setDetectionThreshold(feature,value)」のパラメータ

 feature:指定した表1に示すいずれかの機能に設定された検出閾値を返します。

表1:feature(機能)
項目 内容
CURIE_IMU_FREEFALL 落下の判定
CURIE_IMU_SHOCK 衝突の判定
CURIE_IMU_MOTION 動くの判定
CURIE_IMU_ZERO_MOTION  止まるの判定
CURIE_IMU_TAP 叩くの判定
 
 value:表1の通り加速度計範囲設定に従って、mg単位で設定される設定値。

表2:各機能の閾値設定範囲             単位:mg                  
項目 加速度の閾値
関数 範囲設定 最小値 最大値 段階 初期値
CURIE_IMU_FREEFALL 3.91 1995.46 7.81 379.79
CURIE_IMU
_SHOCK
2000 3.91 1995.46 7.81 1503.43
4000 7.81 3993.46 15.63
8000 15.63 7984.38 31.25
16000 31.25 15968.75 62.50
CURIE_IMU
_MOTION
2000 0.00 997.05 3.91 78.20
4000 0.00 1991.55 7.81
8000 0.00 3985.65 15.63
16000 0.00 7968.75 31.25
CURIE_IMU
_ZERO_MOTION
2000 0.00 997.05 3.91 78.20
4000 0.00 1991.55 7.81
8000 0.00 3985.65 15.63
16000 0.00 7968.75 31.25
CURIE_IMU
_TAP
2000 31.25 7968.75 62.50 656.25
4000 62.50 31937.50 125.00
8000 125.00 63875.00 250.00
16000 250.00 127750.00 500.00
  
■その他関数
 Curie IMUライブラリに関するその他関数については、コチラをご覧ください。

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

↩【ArduinoIDE reference】目次に戻る