Playing around with accelerometer and magnetometer on mbed KL46Z
Dependencies: MAG3110 MMA8451Q PinDetect mbed TSI
Diff: main.cpp
- Revision:
- 0:648dde0c4ef8
- Child:
- 2:bb31f097af0f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Feb 02 22:07:05 2014 +0000 @@ -0,0 +1,77 @@ +#include "mbed.h" +#include "PinDetect.h" +#include "MMA8451Q.h" +#include "MAG3110.h" + +#define MMA8451_I2C_ADDRESS (0x1d<<1) + +// Declare output LEDs +DigitalOut ledgreen(PTD5); +DigitalOut ledred(PTE29); + +// Declare USB serial connection +Serial pc(USBTX,USBRX); + +// Declare timer interrupt +Ticker timerAcc; +Ticker timerMag; + +// Declare pointer variables +float xAcc; +float yAcc; +float zAcc; +int xMag; +int yMag; +int zMag; + +// Declare Accelerometer pins and I2C address +MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS, 0, 0); +// Declare Magnetometer pins +MAG3110 mag(PTE25, PTE24); + +// Functions +void init(); +void accTime(); +void magTime(); + +void init() +{ + // Attach timerAcc + timerAcc.attach(&accTime, 0.5); + timerMag.attach(&magTime, 0.75); + ledred = 0; + ledgreen = 0; +} + +int main() +{ + // Initialize + init(); + + while(1) + { + // Read and print data from accelerometer + pc.puts("Accelerometer Data:\r\n"); + pc.printf("X: %f, Y: %f, Z: %f\r\n", xAcc, yAcc, zAcc); + // Read data from magnetometer + pc.puts("Magnetometer Data:\r\n"); + pc.printf("X: %d, Y: %d, Z: %d\r\n", xMag, yMag, zMag); + wait(0.5); + } +} + +void accTime() +{ + xAcc = abs(acc.getAccX()); + yAcc = abs(acc.getAccY()); + zAcc = abs(acc.getAccZ()); + ledgreen = !ledgreen; +} + +void magTime() +{ + xMag = mag.getXVal(); + yMag = mag.getYVal(); + zMag = mag.getZVal(); + ledred = !ledred; +} \ No newline at end of file