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: BNO055_fusion mbed NeoStrip
Dependents: MadPulse_Controller_ros
Fork of ES456_Labs by
Revision 0:42d1dda7d9c0, committed 2016-07-12
- Comitter:
- jdawkins
- Date:
- Tue Jul 12 19:03:38 2016 +0000
- Child:
- 1:d56e1d85e6d8
- Commit message:
- Initial Commit;
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BNO055_fusion.lib Tue Jul 12 19:03:38 2016 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/kenjiArai/code/BNO055_fusion/#08b7e0c8e4a3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Tue Jul 12 19:03:38 2016 +0000
@@ -0,0 +1,121 @@
+//Uses the measured z-acceleration to drive leds 2 and 3 of the mbed
+
+#define LOG_RATE 25.0
+#define LOOP_RATE 200.0
+#define CMD_TIMEOUT 1.0
+#define GEAR_RATIO (1/2.75)
+#define PI 3.14159
+#include "mbed.h"
+
+#include "BNO055.h"
+
+
+BNO055 imu(p9, p10);
+
+
+int left;
+float saturateCmd(float cmd);
+void menuFunction(Serial *port);
+DigitalOut status_LED(LED1);
+DigitalOut armed_LED(LED2);
+DigitalOut auto_LED(LED3);
+DigitalOut hall_LED(LED4);
+
+Serial pc(USBTX, USBRX); // tx, rx for serial USB interface to pc
+Serial xbee(p28, p27); // tx, rx for Xbee
+
+
+
+
+Timer t; // create timer instance
+
+float t_imu,t_cmd,str_cmd,thr_cmd,str,thr;
+float t_hall, dt_hall,t_run,t_stop,t_log;
+bool armed, auto_ctrl;
+float wheel_spd;
+float arm_clock;
+bool str_cond,thr_cond,run_ctrl,log_data;
+bool log_imu,log_bno,log_odo,log_mag = false;
+
+int main()
+{
+
+ pc.baud(115200);
+ xbee.baud(115200);
+
+//imu.init_MPU_i2c();
+ left = 0;
+ str_cmd = 0;
+ str=0;
+ thr=0;
+ thr_cmd = 0;
+ arm_clock =0;
+ str_cond = false;
+ thr_cond = false;
+ armed = false;
+ auto_ctrl = false;
+ run_ctrl = false;
+ log_data = false;
+
+ t.start();
+ t_imu = t.read();
+ t_cmd = 0;
+
+ status_LED = 1;
+
+ if(imu.check()) {
+ pc.printf("BNO055 connected\r\n");
+ imu.setmode(OPERATION_MODE_CONFIG);
+ imu.SetExternalCrystal(1);
+ //bno.set_orientation(1);
+ imu.setmode(OPERATION_MODE_NDOF); //Uses magnetometer
+ //bno.setmode(OPERATION_MODE_NDOF_FMC_OFF); //no magnetometer
+ imu.set_angle_units(DEGREES);
+ imu.set_mapping(1);
+ } else {
+ pc.printf("IMU BNO055 NOT connected\r\n Program Trap.");
+ status_LED = 1;
+ armed_LED = 1;
+ hall_LED = 1;
+ auto_LED = 1;
+ while(1) {
+ status_LED = !status_LED;
+ armed_LED = !armed_LED;
+ hall_LED = !hall_LED;
+ auto_LED = !auto_LED;
+ wait(0.5);
+ }
+ }
+
+ pc.printf("ES456 Vehcile Program\r\n");
+ while(1){
+
+
+ imu.get_angles();
+ imu.get_accel();
+ imu.get_gyro();
+ imu.get_mag();
+ if(t.read()-t_imu > (1/LOG_RATE)) {
+
+
+ // pc.printf("%.3f, %.3f, %.3f, %.3f, %.3f, %.3f\r\n", imu.accel.x,imu.accel.y,imu.accel.z,imu.gyro.x,imu.gyro.y,imu.gyro.z);
+ pc.printf("$IMU,%.3f, %.3f, %.3f, %.3f, %.3f, %.3f\r\n", imu.accel.x,imu.accel.y,imu.accel.z,imu.gyro.x,imu.gyro.y,imu.gyro.z);
+ pc.printf("$MAG,%.1f, %.1f, %.1f\r\n",imu.mag.x,imu.mag.y,imu.mag.z);
+ pc.printf("$BNO,%.2f, %.2f, %.2f\r\n",imu.euler.roll,imu.euler.pitch,imu.euler.yaw);
+
+ xbee.printf("$IMU,%.3f, %.3f, %.3f, %.3f, %.3f, %.3f\r\n", imu.accel.x,imu.accel.y,imu.accel.z,imu.gyro.x,imu.gyro.y,imu.gyro.z);
+ xbee.printf("$MAG,%.1f, %.1f, %.1f\r\n",imu.mag.x,imu.mag.y,imu.mag.z);
+ xbee.printf("$BNO,%.2f, %.2f, %.2f\r\n",imu.euler.roll,imu.euler.pitch,imu.euler.yaw);
+
+ xbee.printf("%.3f, %.3f, %.3f, %.3f, %.3f, %.3f\r\n", imu.accel.x,imu.accel.y,imu.accel.z,imu.gyro.x,imu.gyro.y,imu.gyro.z);
+
+ t_imu = t.read();
+ } // if t.read
+ wait(1/LOOP_RATE);
+ status_LED=!status_LED;
+ } // while (1)
+
+} // main
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Jul 12 19:03:38 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/6c34061e7c34 \ No newline at end of file
