-
Notifications
You must be signed in to change notification settings - Fork 152
/
Copy pathMPU9250_DMP_Pedometer.ino
70 lines (57 loc) · 1.7 KB
/
MPU9250_DMP_Pedometer.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/************************************************************
MPU9250_DMP_Pedometer
Pedometer example for MPU-9250 DMP Arduino Library
Jim Lindblom @ SparkFun Electronics
original creation date: November 23, 2016
https://github.com/sparkfun/SparkFun_MPU9250_DMP_Arduino_Library
The MPU-9250's digital motion processor (DMP) can estimate
steps taken -- effecting a pedometer.
After uploading the code, try shaking the 9DoF up and
down at a "stepping speed."
Development environment specifics:
Arduino IDE 1.6.12
SparkFun 9DoF Razor IMU M0
Supported Platforms:
- ATSAMD21 (Arduino Zero, SparkFun SAMD21 Breakouts)
*************************************************************/
#include <SparkFunMPU9250-DMP.h>
#ifdef defined(SAMD)
#define SerialPort SerialUSB
#else
#define SerialPort Serial
#endif
MPU9250_DMP imu;
unsigned long stepCount = 0;
unsigned long stepTime = 0;
unsigned long lastStepCount = 0;
void setup()
{
SerialPort.begin(115200);
// Call imu.begin() to verify communication and initialize
if (imu.begin() != INV_SUCCESS)
{
while (1)
{
SerialPort.println("Unable to communicate with MPU-9250");
SerialPort.println("Check connections, and try again.");
SerialPort.println();
delay(5000);
}
}
imu.dmpBegin(DMP_FEATURE_PEDOMETER);
imu.dmpSetPedometerSteps(stepCount);
imu.dmpSetPedometerTime(stepTime);
}
void loop()
{
stepCount = imu.dmpGetPedometerSteps();
stepTime = imu.dmpGetPedometerTime();
if (stepCount != lastStepCount)
{
lastStepCount = stepCount;
SerialPort.print("Walked " + String(stepCount) +
" steps");
SerialPort.println(" (" +
String((float)stepTime / 1000.0) + " s)");
}
}