Playing around with accelerometer and magnetometer on mbed KL46Z

Dependencies:   MAG3110 MMA8451Q PinDetect mbed TSI

main.cpp

Committer:
oliverfang
Date:
2014-02-03
Revision:
4:0d2eefc2be8e
Parent:
3:552b7c450b2f
Child:
8:b87b93a62a6a

File content as of revision 4:0d2eefc2be8e:

#include "mbed.h"
#include "PinDetect.h"
#include "MMA8451Q.h"
#include "MAG3110.h"
#include "TSISensor.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;
Ticker timerLight; 
Ticker timerTouch;

// Declare pointer variables
float xAcc;
float yAcc;
float zAcc;
int xMag;
int yMag;
int zMag;
float xLight; 
float xTouch; 

// Sampling rates
float accRate = 0.1;
float magRate = 0.1;
float lightRate = 0.1;
float touchRate = 0.1;


// Declare Accelerometer pins and I2C address
MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS, 0, 0);
// Declare Magnetometer pins
MAG3110 mag(PTE25, PTE24);
// Declare touch sensor pin
TSISensor touch;
// Declare light sensor pin
AnalogIn light(PTE22);

// Functions
void init();
void printData();
void accTime();
void magTime();
void lightTime();
void touchTime();

void init()
{
    // Attach timerAcc
    timerAcc.attach(&accTime, accRate);
    timerMag.attach(&magTime, magRate);
    timerLight.attach(&lightTime, lightRate);
    timerTouch.attach(&touchTime, touchRate);
    ledred = 0; 
    ledgreen = 0;   
}

int main() 
{
    // Initialize
    init();

    while(1)
    {
        printData();
        wait(0.1);
    }
}

void printData()
{
    // Read and print data from accelerometer
    pc.printf("/%f/%f/%f/", xAcc, yAcc, zAcc);
    // Read data from magnetometer
    pc.printf("%d/%d/%d/", xMag, yMag, zMag);
    pc.printf("%f/", xLight);
    pc.printf("%f/\r\n", xTouch);
}        
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;
}

void lightTime()
{
    xLight = 1 - light.read();
}

void touchTime()
{
    xTouch = 1 - touch.readPercentage();
}