Statistics
| Branch: | Revision:

adafruit_bno055 / examples / sensorapi / sensorapi.ino @ 3237e6e5

History | View | Annotate | Download (5.252 KB)

1 4bc1c0c1 Kevin Townsend
#include <Wire.h>
2
#include <Adafruit_Sensor.h>
3
#include <Adafruit_BNO055.h>
4
#include <utility/imumaths.h>
5
6
/* This driver uses the Adafruit unified sensor library (Adafruit_Sensor),
7
   which provides a common 'type' for sensor data and some helper functions.
8 8ac2d6f6 Kevin Townsend
9 4bc1c0c1 Kevin Townsend
   To use this driver you will also need to download the Adafruit_Sensor
10
   library and include it in your libraries folder.
11
12
   You should also assign a unique ID to this sensor for use with
13
   the Adafruit Sensor API so that you can identify this particular
14
   sensor in any data logs, etc.  To assign a unique ID, simply
15
   provide an appropriate value in the constructor below (12345
16
   is used by default in this example).
17 8ac2d6f6 Kevin Townsend
18 4bc1c0c1 Kevin Townsend
   Connections
19
   ===========
20
   Connect SCL to analog 5
21
   Connect SDA to analog 4
22 c4f272e1 ladyada
   Connect VDD to 3-5V DC
23 4bc1c0c1 Kevin Townsend
   Connect GROUND to common ground
24 8ac2d6f6 Kevin Townsend
25 4bc1c0c1 Kevin Townsend
   History
26
   =======
27
   2015/MAR/03  - First release (KTOWN)
28 3237e6e5 Kevin Townsend
   2015/AUG/27  - Added calibration and system status helpers
29 4bc1c0c1 Kevin Townsend
*/
30
31
/* Set the delay between fresh samples */
32 c4f272e1 ladyada
#define BNO055_SAMPLERATE_DELAY_MS (100)
33 8ac2d6f6 Kevin Townsend
34 4bc1c0c1 Kevin Townsend
Adafruit_BNO055 bno = Adafruit_BNO055(55);
35
36
/**************************************************************************/
37
/*
38
    Displays some basic information on this sensor from the unified
39
    sensor API sensor_t type (see Adafruit_Sensor for more information)
40
*/
41
/**************************************************************************/
42
void displaySensorDetails(void)
43
{
44
  sensor_t sensor;
45
  bno.getSensor(&sensor);
46
  Serial.println("------------------------------------");
47
  Serial.print  ("Sensor:       "); Serial.println(sensor.name);
48
  Serial.print  ("Driver Ver:   "); Serial.println(sensor.version);
49
  Serial.print  ("Unique ID:    "); Serial.println(sensor.sensor_id);
50
  Serial.print  ("Max Value:    "); Serial.print(sensor.max_value); Serial.println(" xxx");
51
  Serial.print  ("Min Value:    "); Serial.print(sensor.min_value); Serial.println(" xxx");
52 8ac2d6f6 Kevin Townsend
  Serial.print  ("Resolution:   "); Serial.print(sensor.resolution); Serial.println(" xxx");
53 4bc1c0c1 Kevin Townsend
  Serial.println("------------------------------------");
54
  Serial.println("");
55
  delay(500);
56
}
57
58
/**************************************************************************/
59
/*
60 8ac2d6f6 Kevin Townsend
    Display some basic info about the sensor status
61
*/
62
/**************************************************************************/
63
void displaySensorStatus(void)
64
{
65
  /* Get the system status values (mostly for debugging purposes) */
66
  uint8_t system_status, self_test_results, system_error;
67
  system_status = self_test_results = system_error = 0;
68
  bno.getSystemStatus(&system_status, &self_test_results, &system_error);
69
70
  /* Display the results in the Serial Monitor */
71
  Serial.print("System Status: 0x");
72
  Serial.println(system_status, HEX);
73
  Serial.print("Self Test:     0x");
74
  Serial.println(self_test_results, HEX);
75
  Serial.print("System Error:  0x");
76
  Serial.println(system_error, HEX);
77
  Serial.println("");
78
  delay(500);
79
}
80
81
/**************************************************************************/
82
/*
83 3237e6e5 Kevin Townsend
    Display sensor calibration status
84
*/
85
/**************************************************************************/
86
void displayCalStatus(void)
87
{
88
  /* Get the four calibration values (0..3) */
89
  /* Any sensor data reporting 0 should be ignored, */
90
  /* 3 means 'fully calibrated" */
91
  uint8_t system, gyro, accel, mag;
92
  system = gyro = accel = mag = 0;
93
  bno.getCalibration(&system, &gyro, &accel, &mag);
94
95
  /* The data should be ignored until the system calibration is > 0 */
96
  Serial.print("\t");
97
  if (!system)
98
  {
99
    Serial.print("! ");
100
  }
101
102
  /* Display the individual values */
103
  Serial.print("Sys:");
104
  Serial.print(system, DEC);
105
  Serial.print(" G:");
106
  Serial.print(gyro, DEC);
107
  Serial.print(" A:");
108
  Serial.print(accel, DEC);
109
  Serial.print(" M:");
110
  Serial.println(mag, DEC);
111
}
112
113
/**************************************************************************/
114
/*
115 4bc1c0c1 Kevin Townsend
    Arduino setup function (automatically called at startup)
116
*/
117
/**************************************************************************/
118 8ac2d6f6 Kevin Townsend
void setup(void)
119 4bc1c0c1 Kevin Townsend
{
120
  Serial.begin(9600);
121
  Serial.println("Orientation Sensor Test"); Serial.println("");
122 8ac2d6f6 Kevin Townsend
123 4bc1c0c1 Kevin Townsend
  /* Initialise the sensor */
124
  if(!bno.begin())
125
  {
126
    /* There was a problem detecting the BNO055 ... check your connections */
127
    Serial.print("Ooops, no BNO055 detected ... Check your wiring or I2C ADDR!");
128
    while(1);
129
  }
130 8ac2d6f6 Kevin Townsend
131 4bc1c0c1 Kevin Townsend
  delay(1000);
132 8ac2d6f6 Kevin Townsend
133 4bc1c0c1 Kevin Townsend
  /* Display some basic information on this sensor */
134
  displaySensorDetails();
135 67f3cff5 Kevin Townsend
136 8ac2d6f6 Kevin Townsend
  /* Optional: Display current status */
137
  // displaySensorStatus();
138
139 c4f272e1 ladyada
  bno.setExtCrystalUse(true);
140 4bc1c0c1 Kevin Townsend
}
141
142
/**************************************************************************/
143
/*
144
    Arduino loop function, called once 'setup' is complete (your own code
145
    should go here)
146
*/
147
/**************************************************************************/
148 8ac2d6f6 Kevin Townsend
void loop(void)
149 4bc1c0c1 Kevin Townsend
{
150 8ac2d6f6 Kevin Townsend
  /* Get a new sensor event */
151
  sensors_event_t event;
152 fcd68623 Kevin Townsend
  bno.getEvent(&event);
153 8ac2d6f6 Kevin Townsend
154 fcd68623 Kevin Townsend
  /* Display the floating point data */
155 4bc1c0c1 Kevin Townsend
  Serial.print("X: ");
156 c4f272e1 ladyada
  Serial.print(event.orientation.x, 4);
157
  Serial.print("\tY: ");
158
  Serial.print(event.orientation.y, 4);
159
  Serial.print("\tZ: ");
160
  Serial.print(event.orientation.z, 4);
161 3237e6e5 Kevin Townsend
162
  /* Optional: Display calibration status */
163
  // displayCalStatus();
164
165
  /* New line for the next sample */
166 48741e1f Kevin Townsend
  Serial.println("");
167 8ac2d6f6 Kevin Townsend
168 3237e6e5 Kevin Townsend
  /* Wait the specified delay before requesting nex data */
169 4bc1c0c1 Kevin Townsend
  delay(BNO055_SAMPLERATE_DELAY_MS);
170 48741e1f Kevin Townsend
}