KL46 Accelerometer + Magnetometer, with 3-axis calibration. Readout through OpenSDA CDC.
Dependencies: MAG3110 MMA8451Q USBDevice mbed
Diff: main.cpp
- Revision:
- 0:c569d820861b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Apr 10 07:48:46 2014 +0000 @@ -0,0 +1,91 @@ +#include "mbed.h" +//#include "USBSerial.h" +#include "MAG3110.h" +#include "MMA8451Q.h" + +#include "magnetic.h" + +#define MMA8451_I2C_ADDRESS (0x1d<<1) +MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); +MAG3110 mag(PTE25, PTE24); +Serial usb_cdc(USBTX, USBRX); + +DigitalOut gLED(LED_GREEN); //PTD5 +DigitalOut rLED(LED_RED); //PTE29 + + +struct MagneticBuffer mbuf; +struct MagCalibration mcal; + +typedef struct tagV3i { + int x; + int y; + int z; +} v3i, *pv3i; + +typedef struct tagV3f { + float x; + float y; + float z; +} v3f, *pv3f; + +int main(void) { + + int i; + v3i mv; + v3f av; + + wait(0.2); + usb_cdc.baud(115200); + + //printf("Started.\r\n"); + + gLED = 1; + rLED = 1; + wait(0.2); + + //usb_cdc.printf("Reading %d mag vectors... ", MAGBUFFSIZE); + gLED = 0; + + // sample MAGBUFFSIZE vectors for cal. + for(i=0; i<MAGBUFFSIZE; i++) { + mag.getValues(&mv.x, &mv.y, &mv.z); + mbuf.iBx[i] = mv.x; + mbuf.iBy[i] = mv.y; + mbuf.iBz[i] = mv.z; + wait(0.04); + }; + + gLED = 1; + //usb_cdc.printf("done\r\n"); + wait(0.2); + + rLED = 0; + + //usb_cdc.printf("Calibrating... "); + ResetMagCalibration(&mcal); + magUpdateCalibration(&mcal, &mbuf); + //usb_cdc.printf("done\r\n"); + rLED = 1; + //printf("cal. result: % 3.2f % 3.2f % 3.2f\r\n", mcal.ftrVx, mcal.ftrVy, mcal.ftrVz); + + while(1) { + mag.getValues(&(mv.x), &(mv.y), &(mv.z)); + if(mv.x>=32768) mv.x |= 0xFFFF0000; + if(mv.y>=32768) mv.y |= 0xFFFF0000; + if(mv.z>=32768) mv.z |= 0xFFFF0000; + + av.x = acc.getAccX(); + av.y = acc.getAccY(); + av.z = acc.getAccZ(); + printf("% 3.3f % 3.3f % 3.3f % 3.3f % 3.3f % 3.3f\r\n", + mv.x*FUTPERCOUNT-mcal.ftrVx, + mv.y*FUTPERCOUNT-mcal.ftrVy, + mv.z*FUTPERCOUNT-mcal.ftrVz, + av.x, + av.y, + av.z); + wait(0.02); + + }; +} \ No newline at end of file