Statistics
| Branch: | Revision:

adafruit_bno055 / examples / bunny / bunny.ino @ master

History | View | Annotate | Download (4.2 KB)

1 8cc46552 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 2fa9c672 Tony DiCola
9 8cc46552 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 2fa9c672 Tony DiCola
18 8cc46552 Kevin Townsend
   Connections
19
   ===========
20
   Connect SCL to analog 5
21
   Connect SDA to analog 4
22 c82fdc7d ladyada
   Connect VDD to 3.3-5V DC
23 8cc46552 Kevin Townsend
   Connect GROUND to common ground
24 2fa9c672 Tony DiCola
25 8cc46552 Kevin Townsend
   History
26
   =======
27
   2015/MAR/03  - First release (KTOWN)
28
*/
29
30
/* Set the delay between fresh samples */
31 c82fdc7d ladyada
#define BNO055_SAMPLERATE_DELAY_MS (100)
32 8cc46552 Kevin Townsend
33 e5a77cdb Gintaras
// Check I2C device address and correct line below (by default address is 0x29 or 0x28)
34
//                                   id, address
35
Adafruit_BNO055 bno = Adafruit_BNO055(55, 0x28);
36 8cc46552 Kevin Townsend
37
/**************************************************************************/
38
/*
39
    Displays some basic information on this sensor from the unified
40
    sensor API sensor_t type (see Adafruit_Sensor for more information)
41
*/
42
/**************************************************************************/
43
void displaySensorDetails(void)
44
{
45
  sensor_t sensor;
46
  bno.getSensor(&sensor);
47
  Serial.println("------------------------------------");
48
  Serial.print  ("Sensor:       "); Serial.println(sensor.name);
49
  Serial.print  ("Driver Ver:   "); Serial.println(sensor.version);
50
  Serial.print  ("Unique ID:    "); Serial.println(sensor.sensor_id);
51
  Serial.print  ("Max Value:    "); Serial.print(sensor.max_value); Serial.println(" xxx");
52
  Serial.print  ("Min Value:    "); Serial.print(sensor.min_value); Serial.println(" xxx");
53 2fa9c672 Tony DiCola
  Serial.print  ("Resolution:   "); Serial.print(sensor.resolution); Serial.println(" xxx");
54 8cc46552 Kevin Townsend
  Serial.println("------------------------------------");
55
  Serial.println("");
56
  delay(500);
57
}
58
59
/**************************************************************************/
60
/*
61
    Arduino setup function (automatically called at startup)
62
*/
63
/**************************************************************************/
64 2fa9c672 Tony DiCola
void setup(void)
65 8cc46552 Kevin Townsend
{
66
  Serial.begin(115200);
67
  Serial.println("Orientation Sensor Test"); Serial.println("");
68 2fa9c672 Tony DiCola
69 8cc46552 Kevin Townsend
  /* Initialise the sensor */
70
  if(!bno.begin())
71
  {
72
    /* There was a problem detecting the BNO055 ... check your connections */
73
    Serial.print("Ooops, no BNO055 detected ... Check your wiring or I2C ADDR!");
74
    while(1);
75
  }
76 23cf3c90 Kevin Townsend
   
77 8cc46552 Kevin Townsend
  delay(1000);
78 2fa9c672 Tony DiCola
79 23cf3c90 Kevin Townsend
  /* Use external crystal for better accuracy */
80
  bno.setExtCrystalUse(true);
81
   
82 8cc46552 Kevin Townsend
  /* Display some basic information on this sensor */
83
  displaySensorDetails();
84
}
85
86
/**************************************************************************/
87
/*
88
    Arduino loop function, called once 'setup' is complete (your own code
89
    should go here)
90
*/
91
/**************************************************************************/
92 2fa9c672 Tony DiCola
void loop(void)
93 8cc46552 Kevin Townsend
{
94 2fa9c672 Tony DiCola
  /* Get a new sensor event */
95
  sensors_event_t event;
96 8cc46552 Kevin Townsend
  bno.getEvent(&event);
97 2fa9c672 Tony DiCola
98 8cc46552 Kevin Townsend
  /* Board layout:
99
         +----------+
100
         |         *| RST   PITCH  ROLL  HEADING
101 1f54374f Kevin Townsend
     ADR |*        *| SCL
102 dd57d4fa Kevin Townsend
     INT |*        *| SDA     ^            /->
103 2fa9c672 Tony DiCola
     PS1 |*        *| GND     |            |
104 dd57d4fa Kevin Townsend
     PS0 |*        *| 3VO     Y    Z-->    \-X
105 2fa9c672 Tony DiCola
         |         *| VIN
106 8cc46552 Kevin Townsend
         +----------+
107
  */
108
109
  /* The processing sketch expects data as roll, pitch, heading */
110
  Serial.print(F("Orientation: "));
111
  Serial.print((float)event.orientation.x);
112
  Serial.print(F(" "));
113
  Serial.print((float)event.orientation.y);
114
  Serial.print(F(" "));
115
  Serial.print((float)event.orientation.z);
116
  Serial.println(F(""));
117
118 2fa9c672 Tony DiCola
  /* Also send calibration data for each sensor. */
119
  uint8_t sys, gyro, accel, mag = 0;
120
  bno.getCalibration(&sys, &gyro, &accel, &mag);
121
  Serial.print(F("Calibration: "));
122
  Serial.print(sys, DEC);
123
  Serial.print(F(" "));
124
  Serial.print(gyro, DEC);
125
  Serial.print(F(" "));
126
  Serial.print(accel, DEC);
127
  Serial.print(F(" "));
128
  Serial.println(mag, DEC);
129
130 8cc46552 Kevin Townsend
  delay(BNO055_SAMPLERATE_DELAY_MS);
131 2fa9c672 Tony DiCola
}