Skip to content

Commit 0f04ebe

Browse files
authored
Merge pull request #14 from sparkfun/Improve_RawReadings
Improve raw readings
2 parents a78e3b4 + ffe867a commit 0f04ebe

File tree

2 files changed

+39
-23
lines changed

2 files changed

+39
-23
lines changed

examples/Example_11_RawReadings/Example_11_RawReadings.ino

Lines changed: 38 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -64,19 +64,22 @@ BNO08x myIMU;
6464
// variables to store all our incoming values
6565

6666
// 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;
7070

7171
// 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;
7575

7676
// 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 previousDebugMillis = 0;
82+
#define DEBUG_INTERVAL_MILLISECONDS 30
8083

8184
void setup() {
8285
Serial.begin(115200);
@@ -99,7 +102,7 @@ void setup() {
99102
}
100103
Serial.println("BNO08x found!");
101104

102-
Wire.setClock(400000); //Increase I2C data rate to 400kHz
105+
//Wire.setClock(400000); //Increase I2C data rate to 400kHz
103106

104107
setReports();
105108

@@ -111,37 +114,37 @@ void setup() {
111114
void setReports(void) {
112115
Serial.println("Setting desired reports");
113116

114-
if (myIMU.enableAccelerometer() == true) {
117+
if (myIMU.enableAccelerometer(1) == true) {
115118
Serial.println(F("Accelerometer enabled"));
116119
} else {
117120
Serial.println("Could not enable accelerometer");
118121
}
119122

120-
if (myIMU.enableRawAccelerometer() == true) {
123+
if (myIMU.enableRawAccelerometer(1) == true) {
121124
Serial.println(F("Raw Accelerometer enabled"));
122125
} else {
123126
Serial.println("Could not enable raw accelerometer");
124127
}
125128

126-
if (myIMU.enableGyro() == true) {
129+
if (myIMU.enableGyro(1) == true) {
127130
Serial.println(F("Gyro enabled"));
128131
} else {
129132
Serial.println("Could not enable gyro");
130133
}
131134

132-
if (myIMU.enableRawGyro() == true) {
135+
if (myIMU.enableRawGyro(1) == true) {
133136
Serial.println(F("Raw Gyro enabled"));
134137
} else {
135138
Serial.println("Could not enable raw gyro");
136139
}
137140

138-
if (myIMU.enableMagnetometer() == true) {
141+
if (myIMU.enableMagnetometer(1) == true) {
139142
Serial.println(F("Magnetometer enabled"));
140143
} else {
141144
Serial.println("Could not enable Magnetometer");
142145
}
143146

144-
if (myIMU.enableRawMagnetometer() == true) {
147+
if (myIMU.enableRawMagnetometer(1) == true) {
145148
Serial.println(F("Raw Magnetometer enabled"));
146149
} else {
147150
Serial.println("Could not enable Raw Magnetometer");
@@ -152,7 +155,7 @@ void setReports(void) {
152155
}
153156

154157
void loop() {
155-
delay(10);
158+
delayMicroseconds(10);
156159

157160
if (myIMU.wasReset()) {
158161
Serial.print("sensor was reset ");
@@ -188,11 +191,19 @@ void loop() {
188191
break;
189192
}
190193

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))
194+
// Only print data to the terminal at a user defined interval
195+
// Each data type (accel or gyro or mag) is reported from the
196+
// BNO086 as separate messages.
197+
// To allow for all these separate messages to arrive, and thus
198+
// have updated data on all axis/types,
199+
// The report intervals for each datatype must be much faster
200+
// than our debug interval.
201+
202+
// time since last debug data printed to terminal
203+
int timeSinceLastSerialPrint = (millis() - previousDebugMillis);
204+
205+
// Only print data to the terminal at a user deficed interval
206+
if(timeSinceLastSerialPrint > DEBUG_INTERVAL_MILLISECONDS)
196207
{
197208
Serial.print(x);
198209
Serial.print("\t");
@@ -215,7 +226,12 @@ void loop() {
215226
Serial.print(mz);
216227
Serial.print("\t");
217228

229+
Serial.print(timeSinceLastSerialPrint);
230+
218231
Serial.println();
232+
233+
previousDebugMillis = millis();
234+
219235
}
220236
}
221237
}

src/SparkFun_BNO08x_Arduino_Library.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1373,7 +1373,7 @@ static void sensorHandler(void *cookie, sh2_SensorEvent_t *event) {
13731373

13741374
rc = sh2_decodeSensorEvent(_sensor_value, event);
13751375
if (rc != SH2_OK) {
1376-
Serial.println("BNO08x - Error decoding sensor event");
1376+
//Serial.println("BNO08x - Error decoding sensor event");
13771377
_sensor_value->timestamp = 0;
13781378
return;
13791379
}

0 commit comments

Comments
 (0)