■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:プログラム例
図2:プログラム実行結果
■「CurieIMU.setDetectionThreshold(feature,value)」のパラメータ
feature:指定した表1に示すいずれかの機能に設定された検出閾値を返します。
項目 | 内容 |
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ライブラリに関するその他関数については、コチラをご覧ください。
励みになりますのでよければクリック下さい(^o^)/