Final_Project

Dependencies:   MMA8451Q8a SLCD mbed

Fork of SP_LCD_punch_mtr_8_v5_class by Siphamandla Simelane

Revision:
6:c2f31918cf77
Parent:
5:6ec1dac45861
Child:
7:6aa16a6fde70
--- a/LCD_punch_mtr8_v5.cpp	Sat Jan 10 16:48:10 2015 +0000
+++ b/LCD_punch_mtr8_v5.cpp	Wed Jan 28 21:42:15 2015 +0000
@@ -35,6 +35,10 @@
 #define REG_WHO_AM_I      0x0D
 #define XYZ_DATA_CFG      0x0E
 
+#define REG_OUT_X_MSB     0x01
+#define REG_OUT_Y_MSB     0x03
+#define REG_OUT_Z_MSB     0x05
+
 #define MAX_2G            0x00
 #define MAX_4G            0x01
 #define MAX_8G            0x02
@@ -68,7 +72,7 @@
 Serial pc(USBTX, USBRX);
 char displayTitles[NUMSTATES][LCDLEN] = {XCOMP,YCOMP,ZCOMP,MAXVECT};
 float accaxisdata[NUMSTATES];
-char displayformats[NUMSTATES][LCDLEN] = {"x.%3.2f","y.%3.2f","z.%3.2f","v.%3.2f"};
+char displayformats[NUMSTATES][LCDLEN] = {"%4.0f","y.%3.2f","z.%3.2f","v.%3.2f"};
 //char displayformats[NUMSTATES][LCDLEN] = {"%4.3f","%4.3f","%4.3f","%4.3f"};
 
 void LCDMess(char *lMess, float dWait){
@@ -120,6 +124,7 @@
     int outState = false;
     char lcdData[LCDLEN]; //buffer needs places dor decimal pt and colon
     uint8_t regData = MAX_4G; // test value must change after G setting
+    uint16_t xCounts;
     
 #ifdef PRINTDBUG
         pc.printf(PROGNAME);
@@ -138,7 +143,7 @@
 // http://cache.freescale.com/files/sensors/doc/data_sheet/MMA8451Q.pdf
 // See page 26
 // Set 8 g max limit
-    acc.setGLimit(MAX_8G); // For now set to 8g
+    acc.setGLimit(MAX_2G); // For now set to 8g
     acc.readRegs(XYZ_DATA_CFG, &regData, 1);
     sprintf (lcdData,"%d",regData);
     LCDMess(lcdData,BLINKTIME);
@@ -166,6 +171,7 @@
 //Get accelerometer data - tilt angles minus offset for zero mark.
 // No offset
             xAcc = abs(acc.getAccX());
+            xCounts = acc.getAccAxis(REG_OUT_X_MSB);
             yAcc = abs(acc.getAccY());
             zAcc = abs(acc.getAccZ());
  // Calulate vector sum of x,y and z reading.       
@@ -174,7 +180,7 @@
             if (vector > vMax) {
                 vMax = vector;
             }
-            accaxisdata[XCOMPD] = xAcc;
+            accaxisdata[XCOMPD] = (float)xCounts;
             accaxisdata[YCOMPD] = yAcc;
             accaxisdata[ZCOMPD] = zAcc;
             accaxisdata[VMAXD] = vMax;