Nucleo-64 version

Dependents:   particle_filter_test read_sensor_data Bike_Sensor_Fusion Encoder ... more

Revision:
9:60a176bd72b3
Parent:
8:08932ac08cb2
--- a/LSM9DS0.cpp	Tue Oct 25 06:21:28 2016 +0000
+++ b/LSM9DS0.cpp	Wed Dec 28 16:44:09 2016 +0000
@@ -50,6 +50,10 @@
     // If we're using SPI, these variables store the chip-select pins.
     gAddress = gAddr;
     xmAddress = xmAddr;
+    
+    // Unit transformation
+    deg2rad = PI/180.0;
+    rad2deg = 180.0/PI;
 }
 
 uint16_t LSM9DS0::begin(gyro_scale gScl, accel_scale aScl, mag_scale mScl, 
@@ -343,7 +347,27 @@
     gy = (temp[3] << 8) | temp[2]; // Store y-axis values into gy
     gz = (temp[5] << 8) | temp[4]; // Store z-axis values into gz
 }
+void LSM9DS0::readGyroFloatVector_degPs(vector<float> &v_out) // Read to float array v_out[]
+{
+    readGyro(); // get gx, gy, gz
+    v_out[0] = calcGyro(gx - gyroOffset[0]);
+    v_out[1] = calcGyro(gy - gyroOffset[1]);
+    v_out[2] = calcGyro(gz - gyroOffset[2]);
+}
+void LSM9DS0::readGyroFloatVector_radPs(vector<float> &v_out) // Read to float array v_out[]
+{
+    readGyro(); // get gx, gy, gz
+    v_out[0] = calcGyro(gx - gyroOffset[0])*deg2rad;
+    v_out[1] = calcGyro(gy - gyroOffset[1])*deg2rad;
+    v_out[2] = calcGyro(gz - gyroOffset[2])*deg2rad;
+}
+void LSM9DS0::readGyroRawVector(vector<int16_t> &v_out){ // Raw data in int16_t
 
+    readGyro(); // get gx, gy, gz
+    v_out[0] = gx;
+    v_out[1] = gy;
+    v_out[2] = gz;
+}
 void LSM9DS0::setGyroOffset(int16_t _gx, int16_t _gy, int16_t _gz)
 {
     gyroOffset[0] = _gx;
@@ -404,7 +428,20 @@
     ay = (temp[3] << 8) | temp[2]; // Store y-axis values into ay
     az = (temp[5] << 8) | temp[4]; // Store z-axis values into az
 }
+void LSM9DS0::readAccelFloatVector(vector<float> &v_out) // Read to float array v_out[]
+{
+    readAccel(); // get ax, ay, az
+    v_out[0] = calcAccel(ax - accelOffset[0]);
+    v_out[1] = calcAccel(ay - accelOffset[1]);
+    v_out[2] = calcAccel(az - accelOffset[2]);
+}
+void LSM9DS0::readAccelRawVector(vector<int16_t> &v_out){ // Raw data in int16_t
 
+    readAccel(); // get ax, ay, az
+    v_out[0] = ax;
+    v_out[1] = ay;
+    v_out[2] = az;
+}
 void LSM9DS0::setAccelOffset(int16_t _ax, int16_t _ay, int16_t _az)
 {
     accelOffset[0] = _ax;
@@ -465,7 +502,20 @@
     my = (temp[3] << 8) | temp[2]; // Store y-axis values into my
     mz = (temp[5] << 8) | temp[4]; // Store z-axis values into mz
 }
+void LSM9DS0::readMagFloatVector(vector<float> &v_out) // Read to float array v_out[]
+{
+    readMag(); // get mx, my, mz
+    v_out[0] = calcMag(mx - magOffset[0]);
+    v_out[1] = calcMag(my - magOffset[1]);
+    v_out[2] = calcMag(mz - magOffset[2]);
+}
+void LSM9DS0::readMagRawVector(vector<int16_t> &v_out){ // Raw data in int16_t
 
+    readMag(); // get mx, my, mz
+    v_out[0] = mx;
+    v_out[1] = my;
+    v_out[2] = mz;
+}
 void LSM9DS0::setMagOffset(int16_t _mx, int16_t _my, int16_t _mz)
 {
     magOffset[0] = _mx;