Playing around with accelerometer and magnetometer on mbed KL46Z

Dependencies:   MAG3110 MMA8451Q PinDetect mbed TSI

main.cpp

Committer:
oliverfang
Date:
2014-02-02
Revision:
0:648dde0c4ef8
Child:
2:bb31f097af0f

File content as of revision 0:648dde0c4ef8:

#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;
}