NOBのArduino日記!

NOBのArduino日記!

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

Arduino IDE(CurieIMU.motionDetectedの使い方)

■CurieIMU.motionDetected関数
 CurieIMU.hライブラリのCurieIMU.motionDetected関数は、モーション検出された場合にtrueを返します。

■使用例
 CurieIMU.motionDetected関数を使ったArduinoIDEのプログラム例は図1の通りです。このプログラムを実行すると、Genuino101に動きが生じると図3の6方向それぞれについてCurieIMU.motionDetected関数によって動きの有無を判定し、動きが生じた軸と方向を図2の様にシリアルモニタ上に返します。

#include "CurieIMU.h"

void setup() {
  Serial.begin(9600); // initialize Serial communication
  while (!Serial) ;   // wait for serial port to connect..
  /* Initialise the IMU */
  CurieIMU.begin();
  CurieIMU.attachInterrupt(eventCallback);
  /* Enable Shock Detection */
  CurieIMU.setDetectionThreshold(CURIE_IMU_MOTION, 78.20); // 1.5g = 1500 mg
  CurieIMU.interrupts(CURIE_IMU_MOTION);
  Serial.println("IMU initialisation complete, waiting for events...");
}

void loop() {}

static void eventCallback(void)
{
  if (CurieIMU.getInterruptStatus(CURIE_IMU_MOTION)) {
    if (CurieIMU.motionDetected(X_AXIS, POSITIVE))
      Serial.println("Negative motion detected on X-axis");
    if (CurieIMU.motionDetected(X_AXIS, NEGATIVE))
      Serial.println("Positive motion detected on X-axis");
    if (CurieIMU.motionDetected(Y_AXIS, POSITIVE))
      Serial.println("Negative motion detected on Y-axis");
    if (CurieIMU.motionDetected(Y_AXIS, NEGATIVE))
      Serial.println("Positive motion detected on Y-axis");
    if (CurieIMU.motionDetected(Z_AXIS, POSITIVE))
      Serial.println("Negative motion detected on Z-axis");
    if (CurieIMU.motionDetected(Z_AXIS, NEGATIVE))
      Serial.println("Positive motion detected on Z-axis");
  }
}
イメージ 1
図1:プログラム例
 
イメージ 1
図2:プログラム実行結果
 

■「CurieIMU.motionDetected(int axis, int direction)」のパラメータ
 axis:ショック検出を確認する軸、表1に示すいずれかの値を設定する事が出来ます。

表1:検出軸の設定
項目 内容
 X_AXIS   X軸
 Y_AXIS  Y軸
 Z_AXIS  Z軸

 

 direction:ショック検出を確認する方向、表2に示すいずれかの値を設定する事が出来ます。

表2:検出方向の設定
項目 内容
POSITIVE ゼロから正の軸値
NEGATIVE ゼロから負の軸値

 

※XYZ軸検出方向について
 Genuino101のXYZ検出方向はそれぞれ+-方向も含め図3の通り6方向です。 
図3-1:重力加速度によるPOSITIVE検出方向(左からXYZ軸)
 
図3-2:重力加速度によるNEGATIVE検出方向(左からXYZ軸)

 

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

 

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

↩【ArduinoIDE reference】目次に戻る