Unit testing and development for 9DOF sparkfun sensor stick

Dependencies:   ADXL345 HMC5883L ITG3200 mbed

Revision:
4:8a77e21d08f1
Parent:
3:5e21a352e236
Child:
5:63b115f85aa7
--- a/main.cpp	Mon Nov 05 18:35:42 2012 +0000
+++ b/main.cpp	Tue Nov 06 19:06:58 2012 +0000
@@ -15,28 +15,67 @@
 */
 
 #include "mbed.h"
-//#include "ITG3200.h"
-//#include "HMC5883L.h"
-#include "adxl345unit.h"
+#include "ITG3200.h"
+#include "HMC5883L.h"
+#include "ADXL345.h"
+//#include "adxl345unit.h"
 
 I2C i2c_bus(p28, p27);
 ADXL345 accel(i2c_bus);
+HMC5883L magno(i2c_bus);
+ITG3200 gyro(i2c_bus);
 Timer t;
 Serial pc(USBTX, USBRX);
 //ADXL345UNIT accel_test(i2c_bus, t);
 
+void sample_time_test();
+
 int main()
 {
+    sample_time_test();
+}
+
+void sample_time_test()
+{
+    int16_t accel_sample[3];
+    int16_t magno_sample[3];
+    int16_t gyro_sample[3];
+    double temperature;
+    double heading_rad, heading_deg;
+    wait(0.5); // enough time for everything to prepare a sample
     t.start();
+    double accel_time, magno_time, gyro_time, temp_time, head_rad_time, head_deg_time;
     pc.baud(9600);
-    accel.calibrate(&t, true);
-    //accel_test.builtInSelfTest(true);
-    //accel_test.offsetCalibration(true);
-/*
-    int sample[3];
+    
+    pc.printf("accel,magno,gyro,temp,head_rad,head_deg\r\n");
+    for(int i = 0; i < 100; i++)
+    {
+        t.reset();
+        accel.getXYZ(accel_sample);
+        accel_time = t.read();
+        magno.getXYZ(magno_sample);
+        magno_time = t.read();
+        gyro.getXYZ(gyro_sample, ITG3200::Calibration);
+        gyro_time = t.read();
+        temperature = gyro.getTemperature();
+        temp_time = t.read();
+        heading_rad = magno.getHeadingXY();
+        head_rad_time = t.read();
+        heading_deg = magno.getHeadingXYDeg();
+        head_deg_time = t.read();
+        
+        pc.printf("%f,%f,%f,%f,%f,%f\r\n",accel_time,magno_time,gyro_time,temp_time,head_rad_time,head_deg_time);
+        
+        wait(0.2 - t.read());
+    }
+}
+
+void ADXL345_test()
+{
+    int16_t sample[3];
     float elapsed_time;
     float time_stamp[100];
-    int samples[100][3];
+    int16_t samples[100][3];
 
     Timer t;
     Serial pc(USBTX, USBRX);
@@ -49,7 +88,7 @@
     wait(0.001);
 
     t.start();
-    accel.getOutput(sample);
+    accel.getXYZ(sample);
     elapsed_time = t.read();
 
     pc.printf("Sample took %f seconds.\r\n", elapsed_time);
@@ -57,17 +96,15 @@
 
     for(int i = 0; i < 100; i++) {
         t.reset();
-        accel.getOutput(samples[i]);
+        accel.getXYZ(samples[i]);
         time_stamp[i] = t.read();
     }
     for(int i = 0; i < 100; i++) {
         pc.printf("Sample took %f seconds.\r\n", time_stamp[i]);
         pc.printf("x: %d, y: %d, z: %d\r\n", samples[i][0],samples[i][1],samples[i][2]);
     }
-    */
 }
 
-/*
 void hmc5883l_test()
 {
     Serial pc(USBTX, USBRX);
@@ -76,7 +113,7 @@
 
     HMC5883L compass(i2c_bus);
 
-    int data[3];
+    int16_t data[3];
 
     while(1) {
         compass.getXYZ(data);
@@ -84,9 +121,8 @@
         wait(0.067);
     }
 }
-*/
-/*
-void itg3200_test()
+
+void itg3200_curve_test()
 {
     DigitalOut myled(LED1);
     LocalFileSystem local("local");               // Create the local filesystem under the name "local"
@@ -106,14 +142,14 @@
     fputs("Temp, X, Y, Z\r\n", fp);               // place the header at the top
 
     float temperature = 0.0;
-    int gyro_readings[3];
+    int16_t gyro_readings[3];
 
     for(int i = 0; i < 120; i++) { // 120 seconds - 600 samples
         myled = 1;
         //gyro.calibrate(1.0);
         wait(0.5);
         myled = 0;
-        gyro.getGyroXYZ(gyro_readings, ITG3200::Calibration);
+        gyro.getXYZ(gyro_readings, ITG3200::Calibration);
         //gyro.getOffset(gyro_readings);
         temperature = gyro.getTemperature();
         pc.printf("%3d,%f,%d,%d,%d\r\n",i,temperature,gyro_readings[0],gyro_readings[1],gyro_readings[2]);
@@ -122,4 +158,3 @@
     fclose(fp);
     myled = 0;
 }
-*/
\ No newline at end of file