■CurieIMU.tapDetected関数
CurieIMU.hライブラリのCurieIMU.tapDetected関数は、タップが検出された場合にtrueを返します。
■使用例
CurieIMU.tapDetected関数を使ったArduinoIDEのプログラム例は図1の通りです。このプログラムを実行すると、Genuino101をタップすると図3の6方向それぞれについてCurieIMU.tapDetected関数によってタップの有無を判定し、タップが生じた軸と方向を図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_TAP, 656.25); // 1g = 1000 mg CurieIMU.interrupts(CURIE_IMU_TAP); Serial.println("IMU initialisation complete, waiting for events..."); } void loop() {} static void eventCallback(void) { if (CurieIMU.getInterruptStatus(CURIE_IMU_TAP)) { if (CurieIMU.tapDetected(X_AXIS, POSITIVE)) Serial.println("Negative tap detected on X-axis"); if (CurieIMU.tapDetected(X_AXIS, NEGATIVE)) Serial.println("Positive tap detected on X-axis"); if (CurieIMU.tapDetected(Y_AXIS, POSITIVE)) Serial.println("Negative tap detected on Y-axis"); if (CurieIMU.tapDetected(Y_AXIS, NEGATIVE)) Serial.println("Positive tap detected on Y-axis"); if (CurieIMU.tapDetected(Z_AXIS, POSITIVE)) Serial.println("Negative tap detected on Z-axis"); if (CurieIMU.tapDetected(Z_AXIS, NEGATIVE)) Serial.println("Positive tap detected on Z-axis"); } }
図1:プログラム例
図2:プログラム実行結果
■「CurieIMU.tapDetected(int axis, int direction)」のパラメータ
axis:ショック検出を確認する軸、表1に示すいずれかの値を設定する事が出来ます。
項目 | 内容 |
X_AXIS | X軸 |
Y_AXIS | Y軸 |
Z_AXIS | Z軸 |
direction:ショック検出を確認する方向、表2に示すいずれかの値を設定する事が出来ます。
項目 | 内容 |
POSITIVE | ゼロから正の軸値 |
NEGATIVE | ゼロから負の軸値 |
※XYZ軸検出方向について
Genuino101のXYZ検出方向はそれぞれ+-方向も含め図3の通り6方向です。
■その他関数
Curie IMUライブラリに関するその他関数については、コチラをご覧ください。
励みになりますのでよければクリック下さい(^o^)/