MMA8451

Dependencies:   MMA8451Q

Committer:
jiuk
Date:
Mon Nov 19 02:05:05 2018 +0000
Revision:
3:ad69174423e0
Parent:
2:5fb1ae9832d3
acelerometro version chip mma8451

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
jiuk 3:ad69174423e0 5 PinName const SDA = PC_9;
jiuk 3:ad69174423e0 6 PinName const SCL = PB_8;
jiuk 3:ad69174423e0 7 //SDA PC_9
jiuk 3:ad69174423e0 8 //SCL PB_8
WilliamMarshQMUL 0:a1caba5c4e48 9
jiuk 3:ad69174423e0 10 #define MMA8451_I2C_ADDRESS (0x68)
WilliamMarshQMUL 0:a1caba5c4e48 11
WilliamMarshQMUL 0:a1caba5c4e48 12 int main(void)
WilliamMarshQMUL 0:a1caba5c4e48 13 {
WilliamMarshQMUL 0:a1caba5c4e48 14 MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS);
WilliamMarshQMUL 0:a1caba5c4e48 15 Serial pc(USBTX, USBRX); // tx, rx
cvmanuel 2:5fb1ae9832d3 16 float threshold = .50;
cvmanuel 2:5fb1ae9832d3 17 float min_threshold = 0.25;
cvmanuel 2:5fb1ae9832d3 18
WilliamMarshQMUL 0:a1caba5c4e48 19
WilliamMarshQMUL 0:a1caba5c4e48 20
WilliamMarshQMUL 0:a1caba5c4e48 21 pc.printf("MMA8451 ID: %d\n", acc.getWhoAmI());
WilliamMarshQMUL 0:a1caba5c4e48 22
WilliamMarshQMUL 0:a1caba5c4e48 23 while (true) {
WilliamMarshQMUL 0:a1caba5c4e48 24 float x, y, z;
WilliamMarshQMUL 0:a1caba5c4e48 25 x = acc.getAccX();
WilliamMarshQMUL 0:a1caba5c4e48 26 y = acc.getAccY();
WilliamMarshQMUL 0:a1caba5c4e48 27 z = acc.getAccZ();
jiuk 3:ad69174423e0 28 pc.printf("acelerometro: %d\n", x);
jiuk 3:ad69174423e0 29 pc.printf("acelerometro: %d\n", y);
jiuk 3:ad69174423e0 30 pc.printf("acelerometro: %d\n", z);
cvmanuel 2:5fb1ae9832d3 31 //flat
cvmanuel 2:5fb1ae9832d3 32 if(z>threshold && abs(x)< min_threshold && abs(y)< min_threshold)
cvmanuel 2:5fb1ae9832d3 33 {
cvmanuel 2:5fb1ae9832d3 34 pc.printf("FLAT\n\r");
cvmanuel 2:5fb1ae9832d3 35 pc.printf("X: %1.2f, Y: %1.2f, Z: %1.2f\n\r", x, y, z);
cvmanuel 2:5fb1ae9832d3 36
cvmanuel 2:5fb1ae9832d3 37 }else
cvmanuel 2:5fb1ae9832d3 38 if(y<-threshold && abs(z)<min_threshold && abs(x)<min_threshold)
cvmanuel 2:5fb1ae9832d3 39 {
cvmanuel 2:5fb1ae9832d3 40 pc.printf("RIGHT\n\r");
cvmanuel 2:5fb1ae9832d3 41 pc.printf("X: %1.2f, Y: %1.2f, Z: %1.2f\n\r", x, y, z);
cvmanuel 2:5fb1ae9832d3 42 }else
cvmanuel 2:5fb1ae9832d3 43 if(y>threshold && abs(z)<min_threshold && abs(x)<min_threshold)
cvmanuel 2:5fb1ae9832d3 44 {
cvmanuel 2:5fb1ae9832d3 45 pc.printf("LEFT\n\r");
cvmanuel 2:5fb1ae9832d3 46 pc.printf("X: %1.2f, Y: %1.2f, Z: %1.2f\n\r", x, y, z);
cvmanuel 2:5fb1ae9832d3 47 }else
cvmanuel 2:5fb1ae9832d3 48 if(x< -threshold && abs(z)<min_threshold && abs(y)<min_threshold)
cvmanuel 2:5fb1ae9832d3 49 {
cvmanuel 2:5fb1ae9832d3 50 pc.printf("DOWN\n\r");
cvmanuel 2:5fb1ae9832d3 51 pc.printf("X: %1.2f, Y: %1.2f, Z: %1.2f\n\r", x, y, z);
cvmanuel 2:5fb1ae9832d3 52 }else
cvmanuel 2:5fb1ae9832d3 53 if(x> threshold && abs(z)<min_threshold && abs(y)<min_threshold)
cvmanuel 2:5fb1ae9832d3 54 {
cvmanuel 2:5fb1ae9832d3 55 pc.printf("UP\n\r");
cvmanuel 2:5fb1ae9832d3 56 pc.printf("X: %1.2f, Y: %1.2f, Z: %1.2f\n\r", x, y, z);
cvmanuel 2:5fb1ae9832d3 57 }else
cvmanuel 2:5fb1ae9832d3 58 if(z<-threshold && abs(y)<min_threshold && abs(x)<min_threshold)
cvmanuel 2:5fb1ae9832d3 59 {
cvmanuel 2:5fb1ae9832d3 60 pc.printf("OVER\n\r");
cvmanuel 2:5fb1ae9832d3 61 pc.printf("X: %1.2f, Y: %1.2f, Z: %1.2f\n\r", x, y, z);
cvmanuel 2:5fb1ae9832d3 62 }
WilliamMarshQMUL 0:a1caba5c4e48 63 Thread::wait(300);
cvmanuel 2:5fb1ae9832d3 64
WilliamMarshQMUL 0:a1caba5c4e48 65 }
WilliamMarshQMUL 0:a1caba5c4e48 66 }