@@ -64,19 +64,24 @@ BNO08x myIMU;
64
64
// variables to store all our incoming values
65
65
66
66
// raw accel
67
- uint16_t x;
68
- uint16_t y;
69
- uint16_t z;
67
+ int16_t x;
68
+ int16_t y;
69
+ int16_t z;
70
70
71
71
// raw gyros
72
- uint16_t gx;
73
- uint16_t gy;
74
- uint16_t gz;
72
+ int16_t gx;
73
+ int16_t gy;
74
+ int16_t gz;
75
75
76
76
// raw mags
77
- uint16_t mx;
78
- uint16_t my;
79
- uint16_t mz;
77
+ int16_t mx;
78
+ int16_t my;
79
+ int16_t mz;
80
+
81
+ unsigned long previousMicros = 0 ;
82
+
83
+ unsigned long previousDebugMillis = 0 ;
84
+ #define DEBUG_INTERVAL_MILLISECONDS 30
80
85
81
86
void setup () {
82
87
Serial.begin (115200 );
@@ -99,7 +104,7 @@ void setup() {
99
104
}
100
105
Serial.println (" BNO08x found!" );
101
106
102
- Wire.setClock (400000 ); // Increase I2C data rate to 400kHz
107
+ // Wire.setClock(400000); //Increase I2C data rate to 400kHz
103
108
104
109
setReports ();
105
110
@@ -111,37 +116,37 @@ void setup() {
111
116
void setReports (void ) {
112
117
Serial.println (" Setting desired reports" );
113
118
114
- if (myIMU.enableAccelerometer () == true ) {
119
+ if (myIMU.enableAccelerometer (1 ) == true ) {
115
120
Serial.println (F (" Accelerometer enabled" ));
116
121
} else {
117
122
Serial.println (" Could not enable accelerometer" );
118
123
}
119
124
120
- if (myIMU.enableRawAccelerometer () == true ) {
125
+ if (myIMU.enableRawAccelerometer (1 ) == true ) {
121
126
Serial.println (F (" Raw Accelerometer enabled" ));
122
127
} else {
123
128
Serial.println (" Could not enable raw accelerometer" );
124
129
}
125
130
126
- if (myIMU.enableGyro () == true ) {
131
+ if (myIMU.enableGyro (1 ) == true ) {
127
132
Serial.println (F (" Gyro enabled" ));
128
133
} else {
129
134
Serial.println (" Could not enable gyro" );
130
135
}
131
136
132
- if (myIMU.enableRawGyro () == true ) {
137
+ if (myIMU.enableRawGyro (1 ) == true ) {
133
138
Serial.println (F (" Raw Gyro enabled" ));
134
139
} else {
135
140
Serial.println (" Could not enable raw gyro" );
136
141
}
137
142
138
- if (myIMU.enableMagnetometer () == true ) {
143
+ if (myIMU.enableMagnetometer (1 ) == true ) {
139
144
Serial.println (F (" Magnetometer enabled" ));
140
145
} else {
141
146
Serial.println (" Could not enable Magnetometer" );
142
147
}
143
148
144
- if (myIMU.enableRawMagnetometer () == true ) {
149
+ if (myIMU.enableRawMagnetometer (1 ) == true ) {
145
150
Serial.println (F (" Raw Magnetometer enabled" ));
146
151
} else {
147
152
Serial.println (" Could not enable Raw Magnetometer" );
@@ -152,7 +157,9 @@ void setReports(void) {
152
157
}
153
158
154
159
void loop () {
155
- delay (10 );
160
+ unsigned long currentMicros = micros ();
161
+
162
+ delayMicroseconds (10 );
156
163
157
164
if (myIMU.wasReset ()) {
158
165
Serial.print (" sensor was reset " );
@@ -188,11 +195,19 @@ void loop() {
188
195
break ;
189
196
}
190
197
191
- // Only print data to terminal if one of the report IDs we want came
192
- // in on the bus
193
- if ( (reportID == SENSOR_REPORTID_RAW_ACCELEROMETER) ||
194
- (reportID == SENSOR_REPORTID_RAW_GYROSCOPE) ||
195
- (reportID == SENSOR_REPORTID_RAW_MAGNETOMETER))
198
+ // Only print data to the terminal at a user defined interval
199
+ // Each data type (accel or gyro or mag) is reported from the
200
+ // BNO086 as separate messages.
201
+ // To allow for all these separate messages to arrive, and thus
202
+ // have updated data on all axis/types,
203
+ // The report intervals for each datatype must be much faster
204
+ // than our debug interval.
205
+
206
+ // time since last debug data printed to terminal
207
+ int timeSinceLastSerialPrint = (millis () - previousDebugMillis);
208
+
209
+ // Only print data to the terminal at a user deficed interval
210
+ if (timeSinceLastSerialPrint > DEBUG_INTERVAL_MILLISECONDS)
196
211
{
197
212
Serial.print (x);
198
213
Serial.print (" \t " );
@@ -215,7 +230,12 @@ void loop() {
215
230
Serial.print (mz);
216
231
Serial.print (" \t " );
217
232
233
+ Serial.print (timeSinceLastSerialPrint);
234
+
218
235
Serial.println ();
236
+
237
+ previousDebugMillis = millis ();
238
+
219
239
}
220
240
}
221
241
}
0 commit comments