Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: HCSR04 X_NUCLEO_6180XA1 mbed
Fork of HelloWorld_6180XA1 by
Revision 50:453855ed9372, committed 2018-05-09
- Comitter:
- EmbeddedSam
- Date:
- Wed May 09 14:43:53 2018 +0000
- Parent:
- 49:0610f88d1d65
- Commit message:
- initial commit;
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BNO055_fusion.lib Wed May 09 14:43:53 2018 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/kenjiArai/code/BNO055_fusion/#9e6fead1e93e
--- a/X_NUCLEO_6180XA1.lib Thu Apr 27 09:39:47 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -https://developer.mbed.org/users/EmbeddedSam/code/X_NUCLEO_6180XA1/#0643cd43b10f
--- a/main.cpp Thu Apr 27 09:39:47 2017 +0000
+++ b/main.cpp Wed May 09 14:43:53 2018 +0000
@@ -1,39 +1,40 @@
/*
- This VL6180X Expansion board test application performs a range measurement
- and als measurement in polling mode on the onboard embedded top sensor.
- The result of both the measures are printed on the serial over.
- get_distance() and get_lux() are synchronous! They block the caller until the
- result will be ready.
+ Ultrasound and IMU Demo
+ Sam Walsh 2018
*/
/* Includes ------------------------------------------------------------------*/
#include "mbed.h"
-#include "XNucleo6180XA1.h"
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#include "hcsr04.h"
+#include "BNO055.h"
/* Definitions ---------------------------------------------------------------*/
-#define VL6180X_I2C_SDA D14
-#define VL6180X_I2C_SCL D15
-
-
/* Variables -----------------------------------------------------------------*/
-static XNucleo6180XA1 *board = NULL;
-float distance;
+HCSR04 UltrasonicSensor(D7,D8); //Trigger,Echo
+Serial pc(USBTX, USBRX); // tx, rx
+I2C i2c(D4, D5); // SDA, SCL
+BNO055 imu(i2c, D6); // Reset =D6, addr = BNO055_G_CHIP_ADDR, mode = MODE_NDOF <- as default
+Timer t;
-HCSR04 UltrasonicSensor(PC_2,PC_3); //Trigger,Echo
-//Serial pc_serial(USBTX, USBRX); // tx, rx
+// RAM -------------------------------------------------------------------------------------------
+BNO055_ID_INF_TypeDef bno055_id_inf;
+BNO055_EULER_TypeDef euler_angles;
+BNO055_QUATERNION_TypeDef quaternion;
+BNO055_LIN_ACC_TypeDef linear_acc;
+BNO055_GRAVITY_TypeDef gravity;
+BNO055_TEMPERATURE_TypeDef chip_temp;
-
+float distance;
/* Functions -----------------------------------------------------------------*/
@@ -43,26 +44,53 @@
=============================================================================*/
int main()
{
- int status;
pc.baud(921600);
- uint32_t lux, dist;
- DevI2C *device_i2c = new DevI2C(VL6180X_I2C_SDA, VL6180X_I2C_SCL);
-
- /* Creates the 6180XA1 expansion board singleton obj. */
- board = XNucleo6180XA1::instance(device_i2c, A3, A2, D13, D2);
+ pc.printf ("Hello World \n\r");
+ imu.set_mounting_position(MT_P6);
+ // Is BNO055 avairable?
+ if (imu.chip_ready() == 0){
+ do {
+ pc.printf("Bosch BNO055 is NOT avirable!!\r\n Reset\r\n");
+ } while(imu.reset());
+ }
+ pc.printf("Bosch BNO055 is available now!!\r\n");
+ pc.printf("AXIS_REMAP_CONFIG:0x%02x, AXIS_REMAP_SIGN:0x%02x\r\n",
+ imu.read_reg0(BNO055_AXIS_MAP_CONFIG), imu.read_reg0(BNO055_AXIS_MAP_SIGN));
+ imu.read_id_inf(&bno055_id_inf);
+ pc.printf("CHIP ID:0x%02x, ACC ID:0x%02x, MAG ID:0x%02x, GYR ID:0x%02x, ",
+ bno055_id_inf.chip_id, bno055_id_inf.acc_id, bno055_id_inf.mag_id, bno055_id_inf.gyr_id);
+ pc.printf("SW REV:0x%04x, BL REV:0x%02x\r\n",
+ bno055_id_inf.sw_rev_id, bno055_id_inf.bootldr_rev_id);
- /* Initializes the 6180XA1 expansion board with default values. */
- status = board->init_board();
- if (status) {
- printf("Failed to init board!\n\r");
- return 0;
- }
+ pc.printf("[E]:Euler Angles[deg],[Q]:Quaternion[],[L]:Linear accel[m/s*s],");
+ pc.printf("[G]:Gravity vector[m/s*s],[T]:Chip temperature,Acc,Gyr[degC],[S]:Status,[M]:time[mS]\r\n");
+ t.start();
+ while(1) {
+ pc.printf ("Ultrasound: %d \t", (int)distance);
+ distance = UltrasonicSensor.distance();
+ imu.get_Euler_Angles(&euler_angles);
+ pc.printf("[E],Y,%+6.1f,R,%+6.1f,P,%+6.1f,",
+ euler_angles.h, euler_angles.r, euler_angles.p);
+ imu.get_quaternion(&quaternion);
+ pc.printf("[Q],W,%d,X,%d,Y,%d,Z,%d,",
+ quaternion.w, quaternion.x, quaternion.y, quaternion.z);
+ imu.get_linear_accel(&linear_acc);
+ pc.printf("[L],X,%+6.1f,Y,%+6.1f,Z,%+6.1f,",
+ linear_acc.x, linear_acc.y, linear_acc.z);
+ imu.get_gravity(&gravity);
+ pc.printf("[G],X,%+6.1f,Y,%+6.1f,Z,%+6.1f,",
+ gravity.x, gravity.y, gravity.z);
+ imu.get_chip_temperature(&chip_temp);
+ pc.printf("[T],%+d,%+d,",
+ chip_temp.acc_chip, chip_temp.gyr_chip);
+ pc.printf("[S],0x%x,[M],%d\r\n",
+ imu.read_calib_status(), t.read_ms());
+ }
+}
- while (true) {
- board->sensor_top->get_distance(&dist);
- board->sensor_top->get_lux(&lux);
- distance = UltrasonicSensor.distance();
- printf ("Time of Flight: %d, Lux: %d, Ultrasound: %d \n\r", dist, lux, (int)distance);
- wait(0.01);
- }
-}
+
+ //while(1){
+
+// wait(0.5);
+// }
+//}
