Playing around with accelerometer and magnetometer on mbed KL46Z

Dependencies:   MAG3110 MMA8451Q PinDetect mbed TSI

Committer:
mohammmo
Date:
Mon Feb 03 05:38:17 2014 +0000
Revision:
5:4ccda4b4f345
Parent:
2:bb31f097af0f
Child:
6:52474f03f1ff
Child:
7:1cd1e239acf0
send Raw data. USE THIS ONE for python script

Who changed what in which revision?

UserRevisionLine numberNew contents of line
oliverfang 0:648dde0c4ef8 1 #include "mbed.h"
oliverfang 0:648dde0c4ef8 2 #include "PinDetect.h"
oliverfang 0:648dde0c4ef8 3 #include "MMA8451Q.h"
oliverfang 0:648dde0c4ef8 4 #include "MAG3110.h"
mohammmo 2:bb31f097af0f 5 #include "TSISensor.h"
oliverfang 0:648dde0c4ef8 6
oliverfang 0:648dde0c4ef8 7 #define MMA8451_I2C_ADDRESS (0x1d<<1)
oliverfang 0:648dde0c4ef8 8
oliverfang 0:648dde0c4ef8 9 // Declare output LEDs
oliverfang 0:648dde0c4ef8 10 DigitalOut ledgreen(PTD5);
oliverfang 0:648dde0c4ef8 11 DigitalOut ledred(PTE29);
oliverfang 0:648dde0c4ef8 12
oliverfang 0:648dde0c4ef8 13 // Declare USB serial connection
oliverfang 0:648dde0c4ef8 14 Serial pc(USBTX,USBRX);
oliverfang 0:648dde0c4ef8 15
oliverfang 0:648dde0c4ef8 16 // Declare timer interrupt
oliverfang 0:648dde0c4ef8 17 Ticker timerAcc;
oliverfang 0:648dde0c4ef8 18 Ticker timerMag;
mohammmo 2:bb31f097af0f 19 Ticker timerLight;
mohammmo 2:bb31f097af0f 20 Ticker timerTouch;
oliverfang 0:648dde0c4ef8 21
oliverfang 0:648dde0c4ef8 22 // Declare pointer variables
oliverfang 0:648dde0c4ef8 23 float xAcc;
oliverfang 0:648dde0c4ef8 24 float yAcc;
oliverfang 0:648dde0c4ef8 25 float zAcc;
oliverfang 0:648dde0c4ef8 26 int xMag;
oliverfang 0:648dde0c4ef8 27 int yMag;
oliverfang 0:648dde0c4ef8 28 int zMag;
mohammmo 2:bb31f097af0f 29 float xLight;
mohammmo 2:bb31f097af0f 30 float xTouch;
oliverfang 0:648dde0c4ef8 31
oliverfang 0:648dde0c4ef8 32 // Declare Accelerometer pins and I2C address
oliverfang 0:648dde0c4ef8 33 MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS, 0, 0);
oliverfang 0:648dde0c4ef8 34 // Declare Magnetometer pins
oliverfang 0:648dde0c4ef8 35 MAG3110 mag(PTE25, PTE24);
mohammmo 2:bb31f097af0f 36 // Declare touch sensor pin
mohammmo 2:bb31f097af0f 37 TSISensor touch;
mohammmo 2:bb31f097af0f 38 // Declare light sensor pin
mohammmo 2:bb31f097af0f 39 AnalogIn light(PTE22);
oliverfang 0:648dde0c4ef8 40
oliverfang 0:648dde0c4ef8 41 // Functions
oliverfang 0:648dde0c4ef8 42 void init();
oliverfang 0:648dde0c4ef8 43 void accTime();
oliverfang 0:648dde0c4ef8 44 void magTime();
mohammmo 2:bb31f097af0f 45 void lightTime();
mohammmo 2:bb31f097af0f 46 void touchTime();
oliverfang 0:648dde0c4ef8 47
oliverfang 0:648dde0c4ef8 48 void init()
oliverfang 0:648dde0c4ef8 49 {
oliverfang 0:648dde0c4ef8 50 // Attach timerAcc
mohammmo 5:4ccda4b4f345 51 timerAcc.attach(&accTime, 0.05);
mohammmo 5:4ccda4b4f345 52 timerMag.attach(&magTime, 0.05);
mohammmo 5:4ccda4b4f345 53 timerLight.attach(&lightTime, 0.05);
mohammmo 5:4ccda4b4f345 54 timerTouch.attach(&touchTime, 0.05);
oliverfang 0:648dde0c4ef8 55 ledred = 0;
oliverfang 0:648dde0c4ef8 56 ledgreen = 0;
oliverfang 0:648dde0c4ef8 57 }
oliverfang 0:648dde0c4ef8 58
oliverfang 0:648dde0c4ef8 59 int main()
oliverfang 0:648dde0c4ef8 60 {
oliverfang 0:648dde0c4ef8 61 // Initialize
oliverfang 0:648dde0c4ef8 62 init();
oliverfang 0:648dde0c4ef8 63
oliverfang 0:648dde0c4ef8 64 while(1)
oliverfang 0:648dde0c4ef8 65 {
mohammmo 5:4ccda4b4f345 66 // read all sensor data
mohammmo 5:4ccda4b4f345 67 pc.printf("%f %f %f %d %d %d %f %f\n", xAcc, yAcc, zAcc, xMag, yMag, zMag, xLight, xTouch);
mohammmo 5:4ccda4b4f345 68 wait(0.05);
oliverfang 0:648dde0c4ef8 69 }
oliverfang 0:648dde0c4ef8 70 }
oliverfang 0:648dde0c4ef8 71
oliverfang 0:648dde0c4ef8 72 void accTime()
oliverfang 0:648dde0c4ef8 73 {
oliverfang 0:648dde0c4ef8 74 xAcc = abs(acc.getAccX());
oliverfang 0:648dde0c4ef8 75 yAcc = abs(acc.getAccY());
oliverfang 0:648dde0c4ef8 76 zAcc = abs(acc.getAccZ());
oliverfang 0:648dde0c4ef8 77 ledgreen = !ledgreen;
oliverfang 0:648dde0c4ef8 78 }
oliverfang 0:648dde0c4ef8 79
oliverfang 0:648dde0c4ef8 80 void magTime()
oliverfang 0:648dde0c4ef8 81 {
oliverfang 0:648dde0c4ef8 82 xMag = mag.getXVal();
oliverfang 0:648dde0c4ef8 83 yMag = mag.getYVal();
oliverfang 0:648dde0c4ef8 84 zMag = mag.getZVal();
oliverfang 0:648dde0c4ef8 85 ledred = !ledred;
mohammmo 2:bb31f097af0f 86 }
mohammmo 2:bb31f097af0f 87
mohammmo 2:bb31f097af0f 88 void lightTime()
mohammmo 2:bb31f097af0f 89 {
mohammmo 2:bb31f097af0f 90 xLight = 1 - light.read();
mohammmo 2:bb31f097af0f 91 }
mohammmo 2:bb31f097af0f 92
mohammmo 2:bb31f097af0f 93 void touchTime()
mohammmo 2:bb31f097af0f 94 {
mohammmo 2:bb31f097af0f 95 xTouch = 1 - touch.readPercentage();
oliverfang 0:648dde0c4ef8 96 }