Kevin Abraham
/
SpriteIMU
asdf
main.cpp@0:8103e7288014, 2019-03-14 (annotated)
- Committer:
- abraha2d
- Date:
- Thu Mar 14 17:54:00 2019 +0000
- Revision:
- 0:8103e7288014
asdf
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
abraha2d | 0:8103e7288014 | 1 | /* mbed Microcontroller Library |
abraha2d | 0:8103e7288014 | 2 | * Copyright (c) 2018 ARM Limited |
abraha2d | 0:8103e7288014 | 3 | * SPDX-License-Identifier: Apache-2.0 |
abraha2d | 0:8103e7288014 | 4 | */ |
abraha2d | 0:8103e7288014 | 5 | |
abraha2d | 0:8103e7288014 | 6 | #include "mbed.h" |
abraha2d | 0:8103e7288014 | 7 | #include "Adafruit_BNO055.h" |
abraha2d | 0:8103e7288014 | 8 | |
abraha2d | 0:8103e7288014 | 9 | DigitalOut led1(LED1); |
abraha2d | 0:8103e7288014 | 10 | I2C i2c(p9, p10); // SDA, SCL |
abraha2d | 0:8103e7288014 | 11 | Adafruit_BNO055 bno(-1, 0x28, &i2c); |
abraha2d | 0:8103e7288014 | 12 | Serial pc(USBTX, USBRX); // TX, RX |
abraha2d | 0:8103e7288014 | 13 | |
abraha2d | 0:8103e7288014 | 14 | /**************************************************************************/ |
abraha2d | 0:8103e7288014 | 15 | /* |
abraha2d | 0:8103e7288014 | 16 | Display sensor calibration status |
abraha2d | 0:8103e7288014 | 17 | */ |
abraha2d | 0:8103e7288014 | 18 | /**************************************************************************/ |
abraha2d | 0:8103e7288014 | 19 | void displayCalStatus(void) |
abraha2d | 0:8103e7288014 | 20 | { |
abraha2d | 0:8103e7288014 | 21 | /* Get the four calibration values (0..3) */ |
abraha2d | 0:8103e7288014 | 22 | /* Any sensor data reporting 0 should be ignored, */ |
abraha2d | 0:8103e7288014 | 23 | /* 3 means 'fully calibrated" */ |
abraha2d | 0:8103e7288014 | 24 | uint8_t system, gyro, accel, mag; |
abraha2d | 0:8103e7288014 | 25 | system = gyro = accel = mag = 0; |
abraha2d | 0:8103e7288014 | 26 | bno.getCalibration(&system, &gyro, &accel, &mag); |
abraha2d | 0:8103e7288014 | 27 | |
abraha2d | 0:8103e7288014 | 28 | /* Display the individual values */ |
abraha2d | 0:8103e7288014 | 29 | pc.printf("Calibration: S:%1d G:%1d A:%1d M:%1d\r\n", system, gyro, accel, mag); |
abraha2d | 0:8103e7288014 | 30 | } |
abraha2d | 0:8103e7288014 | 31 | |
abraha2d | 0:8103e7288014 | 32 | // main() runs in its own thread in the OS |
abraha2d | 0:8103e7288014 | 33 | int main() |
abraha2d | 0:8103e7288014 | 34 | { |
abraha2d | 0:8103e7288014 | 35 | pc.baud(115200); |
abraha2d | 0:8103e7288014 | 36 | pc.printf("Initializing...\r\n"); |
abraha2d | 0:8103e7288014 | 37 | |
abraha2d | 0:8103e7288014 | 38 | /* Initialise the sensor */ |
abraha2d | 0:8103e7288014 | 39 | if(!bno.begin()) { |
abraha2d | 0:8103e7288014 | 40 | /* There was a problem detecting the BNO055 ... check your connections */ |
abraha2d | 0:8103e7288014 | 41 | pc.printf("Ooops, no BNO055 detected ... Check your wiring or I2C ADDR!\r\n"); |
abraha2d | 0:8103e7288014 | 42 | while(1); |
abraha2d | 0:8103e7288014 | 43 | } |
abraha2d | 0:8103e7288014 | 44 | |
abraha2d | 0:8103e7288014 | 45 | bno.setExtCrystalUse(true); |
abraha2d | 0:8103e7288014 | 46 | |
abraha2d | 0:8103e7288014 | 47 | while (true) { |
abraha2d | 0:8103e7288014 | 48 | /* Get a new sensor event */ |
abraha2d | 0:8103e7288014 | 49 | sensors_event_t event; |
abraha2d | 0:8103e7288014 | 50 | bno.getEvent(&event); |
abraha2d | 0:8103e7288014 | 51 | |
abraha2d | 0:8103e7288014 | 52 | /* Display the floating point data */ |
abraha2d | 0:8103e7288014 | 53 | pc.printf("X: %4f Y: %4f Z: %4f\r\n", |
abraha2d | 0:8103e7288014 | 54 | event.orientation.x, |
abraha2d | 0:8103e7288014 | 55 | event.orientation.y, |
abraha2d | 0:8103e7288014 | 56 | event.orientation.z); |
abraha2d | 0:8103e7288014 | 57 | |
abraha2d | 0:8103e7288014 | 58 | displayCalStatus(); |
abraha2d | 0:8103e7288014 | 59 | |
abraha2d | 0:8103e7288014 | 60 | // Blink LED and wait 0.5 seconds |
abraha2d | 0:8103e7288014 | 61 | led1 = !led1; |
abraha2d | 0:8103e7288014 | 62 | wait_ms(100); |
abraha2d | 0:8103e7288014 | 63 | } |
abraha2d | 0:8103e7288014 | 64 | } |