initial version

Dependencies:   MMA8451Q

Fork of Accelerometer_example by William Marsh

Committer:
cvmanuel
Date:
Fri Feb 16 17:39:18 2018 +0000
Revision:
2:ca0eb23626c5
Parent:
0:a1caba5c4e48
Child:
3:d3a5c64bbcf9
initial

Who changed what in which revision?

UserRevisionLine numberNew contents of line
WilliamMarshQMUL 0:a1caba5c4e48 1 #include "mbed.h"
WilliamMarshQMUL 0:a1caba5c4e48 2 #include "rtos.h"
WilliamMarshQMUL 0:a1caba5c4e48 3 #include "MMA8451Q.h"
WilliamMarshQMUL 0:a1caba5c4e48 4
WilliamMarshQMUL 0:a1caba5c4e48 5 PinName const SDA = PTE25;
WilliamMarshQMUL 0:a1caba5c4e48 6 PinName const SCL = PTE24;
WilliamMarshQMUL 0:a1caba5c4e48 7
WilliamMarshQMUL 0:a1caba5c4e48 8 #define MMA8451_I2C_ADDRESS (0x1d<<1)
cvmanuel 2:ca0eb23626c5 9
cvmanuel 2:ca0eb23626c5 10 Thread pollT;
cvmanuel 2:ca0eb23626c5 11 Timer timer;
cvmanuel 2:ca0eb23626c5 12 Ticker tick;
cvmanuel 2:ca0eb23626c5 13
cvmanuel 2:ca0eb23626c5 14 enum accelerometerPos { flat, left, right, up, down, over };
cvmanuel 2:ca0eb23626c5 15
WilliamMarshQMUL 0:a1caba5c4e48 16
WilliamMarshQMUL 0:a1caba5c4e48 17 int main(void)
WilliamMarshQMUL 0:a1caba5c4e48 18 {
WilliamMarshQMUL 0:a1caba5c4e48 19 MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS);
WilliamMarshQMUL 0:a1caba5c4e48 20 PwmOut rled(LED1);
WilliamMarshQMUL 0:a1caba5c4e48 21 PwmOut gled(LED2);
WilliamMarshQMUL 0:a1caba5c4e48 22 PwmOut bled(LED3);
WilliamMarshQMUL 0:a1caba5c4e48 23 Serial pc(USBTX, USBRX); // tx, rx
cvmanuel 2:ca0eb23626c5 24 float threshold = .50;
cvmanuel 2:ca0eb23626c5 25 float min_threshold = 0.25;
cvmanuel 2:ca0eb23626c5 26
WilliamMarshQMUL 0:a1caba5c4e48 27
WilliamMarshQMUL 0:a1caba5c4e48 28
WilliamMarshQMUL 0:a1caba5c4e48 29 pc.printf("MMA8451 ID: %d\n", acc.getWhoAmI());
WilliamMarshQMUL 0:a1caba5c4e48 30
WilliamMarshQMUL 0:a1caba5c4e48 31 while (true) {
WilliamMarshQMUL 0:a1caba5c4e48 32 float x, y, z;
WilliamMarshQMUL 0:a1caba5c4e48 33 x = acc.getAccX();
WilliamMarshQMUL 0:a1caba5c4e48 34 y = acc.getAccY();
WilliamMarshQMUL 0:a1caba5c4e48 35 z = acc.getAccZ();
cvmanuel 2:ca0eb23626c5 36
cvmanuel 2:ca0eb23626c5 37
cvmanuel 2:ca0eb23626c5 38 if(z>threshold && abs(x)< min_threshold && abs(y)< min_threshold)
cvmanuel 2:ca0eb23626c5 39 {
cvmanuel 2:ca0eb23626c5 40 rled = 1.0f - abs(x);
cvmanuel 2:ca0eb23626c5 41 gled = 1.0f - abs(y);
cvmanuel 2:ca0eb23626c5 42 bled = 1.0f - abs(z);
cvmanuel 2:ca0eb23626c5 43 pc.printf("FLAT\n\r");
cvmanuel 2:ca0eb23626c5 44 pc.printf("X: %1.2f, Y: %1.2f, Z: %1.2f\n\r", x, y, z);
cvmanuel 2:ca0eb23626c5 45 timer.start();
cvmanuel 2:ca0eb23626c5 46
cvmanuel 2:ca0eb23626c5 47 }else
cvmanuel 2:ca0eb23626c5 48 if(y<-threshold && abs(z)<min_threshold && abs(x)<min_threshold)
cvmanuel 2:ca0eb23626c5 49 {
cvmanuel 2:ca0eb23626c5 50 rled = 1.0f - abs(x);
WilliamMarshQMUL 0:a1caba5c4e48 51 gled = 1.0f - abs(y);
WilliamMarshQMUL 0:a1caba5c4e48 52 bled = 1.0f - abs(z);
cvmanuel 2:ca0eb23626c5 53 pc.printf("RIGHT\n\r");
cvmanuel 2:ca0eb23626c5 54 pc.printf("X: %1.2f, Y: %1.2f, Z: %1.2f\n\r", x, y, z);
cvmanuel 2:ca0eb23626c5 55 pc.printf("The time taken was: %f seconds\n\r",timer.read());
cvmanuel 2:ca0eb23626c5 56
cvmanuel 2:ca0eb23626c5 57 }
cvmanuel 2:ca0eb23626c5 58
cvmanuel 2:ca0eb23626c5 59
cvmanuel 2:ca0eb23626c5 60
cvmanuel 2:ca0eb23626c5 61
cvmanuel 2:ca0eb23626c5 62
cvmanuel 2:ca0eb23626c5 63
cvmanuel 2:ca0eb23626c5 64
cvmanuel 2:ca0eb23626c5 65
WilliamMarshQMUL 0:a1caba5c4e48 66 Thread::wait(300);
cvmanuel 2:ca0eb23626c5 67 timer.stop();
cvmanuel 2:ca0eb23626c5 68
cvmanuel 2:ca0eb23626c5 69 pc.printf("X: %1.2f, Y: %1.2f, Z: %1.2f\n\r", x, y, z);
cvmanuel 2:ca0eb23626c5 70
WilliamMarshQMUL 0:a1caba5c4e48 71 }
WilliamMarshQMUL 0:a1caba5c4e48 72 }