Playing around with accelerometer and magnetometer on mbed KL46Z
Dependencies: MAG3110 MMA8451Q PinDetect mbed TSI
main.cpp@3:552b7c450b2f, 2014-02-03 (annotated)
- Committer:
- oliverfang
- Date:
- Mon Feb 03 01:05:40 2014 +0000
- Revision:
- 3:552b7c450b2f
- Parent:
- 2:bb31f097af0f
- Child:
- 4:0d2eefc2be8e
made variables for sampling rate
Who changed what in which revision?
User | Revision | Line number | New 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 | 3:552b7c450b2f | 32 | // Sampling rates |
oliverfang | 3:552b7c450b2f | 33 | float accRate = 0.5; |
oliverfang | 3:552b7c450b2f | 34 | float magRate = 0.75; |
oliverfang | 3:552b7c450b2f | 35 | float lightRate = 0.1; |
oliverfang | 3:552b7c450b2f | 36 | float touchRate = 0.1; |
oliverfang | 3:552b7c450b2f | 37 | |
oliverfang | 3:552b7c450b2f | 38 | |
oliverfang | 0:648dde0c4ef8 | 39 | // Declare Accelerometer pins and I2C address |
oliverfang | 0:648dde0c4ef8 | 40 | MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS, 0, 0); |
oliverfang | 0:648dde0c4ef8 | 41 | // Declare Magnetometer pins |
oliverfang | 0:648dde0c4ef8 | 42 | MAG3110 mag(PTE25, PTE24); |
mohammmo | 2:bb31f097af0f | 43 | // Declare touch sensor pin |
mohammmo | 2:bb31f097af0f | 44 | TSISensor touch; |
mohammmo | 2:bb31f097af0f | 45 | // Declare light sensor pin |
mohammmo | 2:bb31f097af0f | 46 | AnalogIn light(PTE22); |
oliverfang | 0:648dde0c4ef8 | 47 | |
oliverfang | 0:648dde0c4ef8 | 48 | // Functions |
oliverfang | 0:648dde0c4ef8 | 49 | void init(); |
oliverfang | 0:648dde0c4ef8 | 50 | void accTime(); |
oliverfang | 0:648dde0c4ef8 | 51 | void magTime(); |
mohammmo | 2:bb31f097af0f | 52 | void lightTime(); |
mohammmo | 2:bb31f097af0f | 53 | void touchTime(); |
oliverfang | 0:648dde0c4ef8 | 54 | |
oliverfang | 0:648dde0c4ef8 | 55 | void init() |
oliverfang | 0:648dde0c4ef8 | 56 | { |
oliverfang | 0:648dde0c4ef8 | 57 | // Attach timerAcc |
oliverfang | 3:552b7c450b2f | 58 | timerAcc.attach(&accTime, accRate); |
oliverfang | 3:552b7c450b2f | 59 | timerMag.attach(&magTime, magRate); |
oliverfang | 3:552b7c450b2f | 60 | timerLight.attach(&lightTime, lightRate); |
oliverfang | 3:552b7c450b2f | 61 | timerTouch.attach(&touchTime, touchRate); |
oliverfang | 0:648dde0c4ef8 | 62 | ledred = 0; |
oliverfang | 0:648dde0c4ef8 | 63 | ledgreen = 0; |
oliverfang | 0:648dde0c4ef8 | 64 | } |
oliverfang | 0:648dde0c4ef8 | 65 | |
oliverfang | 0:648dde0c4ef8 | 66 | int main() |
oliverfang | 0:648dde0c4ef8 | 67 | { |
oliverfang | 0:648dde0c4ef8 | 68 | // Initialize |
oliverfang | 0:648dde0c4ef8 | 69 | init(); |
oliverfang | 0:648dde0c4ef8 | 70 | |
oliverfang | 0:648dde0c4ef8 | 71 | while(1) |
oliverfang | 0:648dde0c4ef8 | 72 | { |
oliverfang | 0:648dde0c4ef8 | 73 | // Read and print data from accelerometer |
mohammmo | 2:bb31f097af0f | 74 | pc.puts("Accelerometer: "); |
mohammmo | 2:bb31f097af0f | 75 | pc.printf("X: %f, Y: %f, Z: %f\t", xAcc, yAcc, zAcc); |
oliverfang | 0:648dde0c4ef8 | 76 | // Read data from magnetometer |
mohammmo | 2:bb31f097af0f | 77 | pc.puts("Magnetometer: "); |
mohammmo | 2:bb31f097af0f | 78 | pc.printf("X: %d, Y: %d, Z: %d\t", xMag, yMag, zMag); |
mohammmo | 2:bb31f097af0f | 79 | pc.puts("Light: "); |
mohammmo | 2:bb31f097af0f | 80 | pc.printf(" %f\t", xLight); |
mohammmo | 2:bb31f097af0f | 81 | pc.puts("touch: "); |
mohammmo | 2:bb31f097af0f | 82 | pc.printf(" %f\r\n", xTouch); |
oliverfang | 0:648dde0c4ef8 | 83 | wait(0.5); |
oliverfang | 0:648dde0c4ef8 | 84 | } |
oliverfang | 0:648dde0c4ef8 | 85 | } |
oliverfang | 0:648dde0c4ef8 | 86 | |
oliverfang | 0:648dde0c4ef8 | 87 | void accTime() |
oliverfang | 0:648dde0c4ef8 | 88 | { |
oliverfang | 0:648dde0c4ef8 | 89 | xAcc = abs(acc.getAccX()); |
oliverfang | 0:648dde0c4ef8 | 90 | yAcc = abs(acc.getAccY()); |
oliverfang | 0:648dde0c4ef8 | 91 | zAcc = abs(acc.getAccZ()); |
oliverfang | 0:648dde0c4ef8 | 92 | ledgreen = !ledgreen; |
oliverfang | 0:648dde0c4ef8 | 93 | } |
oliverfang | 0:648dde0c4ef8 | 94 | |
oliverfang | 0:648dde0c4ef8 | 95 | void magTime() |
oliverfang | 0:648dde0c4ef8 | 96 | { |
oliverfang | 0:648dde0c4ef8 | 97 | xMag = mag.getXVal(); |
oliverfang | 0:648dde0c4ef8 | 98 | yMag = mag.getYVal(); |
oliverfang | 0:648dde0c4ef8 | 99 | zMag = mag.getZVal(); |
oliverfang | 0:648dde0c4ef8 | 100 | ledred = !ledred; |
mohammmo | 2:bb31f097af0f | 101 | } |
mohammmo | 2:bb31f097af0f | 102 | |
mohammmo | 2:bb31f097af0f | 103 | void lightTime() |
mohammmo | 2:bb31f097af0f | 104 | { |
mohammmo | 2:bb31f097af0f | 105 | xLight = 1 - light.read(); |
mohammmo | 2:bb31f097af0f | 106 | } |
mohammmo | 2:bb31f097af0f | 107 | |
mohammmo | 2:bb31f097af0f | 108 | void touchTime() |
mohammmo | 2:bb31f097af0f | 109 | { |
mohammmo | 2:bb31f097af0f | 110 | xTouch = 1 - touch.readPercentage(); |
oliverfang | 0:648dde0c4ef8 | 111 | } |