
University project with FRDM-KL25Z
main.cpp@1:d60a7ce97623, 2022-01-11 (annotated)
- Committer:
- rolandtamas
- Date:
- Tue Jan 11 19:12:13 2022 +0000
- Revision:
- 1:d60a7ce97623
- Parent:
- 0:81d50ca17412
Final version of the project
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rolandtamas | 0:81d50ca17412 | 1 | #include "mbed.h" |
rolandtamas | 0:81d50ca17412 | 2 | #include "MMA8451Q.h" |
rolandtamas | 0:81d50ca17412 | 3 | |
rolandtamas | 0:81d50ca17412 | 4 | #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) |
rolandtamas | 0:81d50ca17412 | 5 | PinName const SDA = PTE25; |
rolandtamas | 0:81d50ca17412 | 6 | PinName const SCL = PTE24; |
rolandtamas | 0:81d50ca17412 | 7 | #elif defined (TARGET_KL05Z) |
rolandtamas | 0:81d50ca17412 | 8 | PinName const SDA = PTB4; |
rolandtamas | 0:81d50ca17412 | 9 | PinName const SCL = PTB3; |
rolandtamas | 0:81d50ca17412 | 10 | #elif defined (TARGET_K20D50M) |
rolandtamas | 0:81d50ca17412 | 11 | PinName const SDA = PTB1; |
rolandtamas | 0:81d50ca17412 | 12 | PinName const SCL = PTB0; |
rolandtamas | 0:81d50ca17412 | 13 | #else |
rolandtamas | 0:81d50ca17412 | 14 | #error TARGET NOT DEFINED |
rolandtamas | 0:81d50ca17412 | 15 | #endif |
rolandtamas | 0:81d50ca17412 | 16 | |
rolandtamas | 0:81d50ca17412 | 17 | #define MMA8451_I2C_ADDRESS (0x1d<<1) |
rolandtamas | 0:81d50ca17412 | 18 | #define MAXBLINKSPEED 0.8 |
rolandtamas | 0:81d50ca17412 | 19 | |
rolandtamas | 0:81d50ca17412 | 20 | int main(void) |
rolandtamas | 0:81d50ca17412 | 21 | { |
rolandtamas | 0:81d50ca17412 | 22 | MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS); |
rolandtamas | 0:81d50ca17412 | 23 | PwmOut rled(LED1); |
rolandtamas | 0:81d50ca17412 | 24 | PwmOut gled(LED2); |
rolandtamas | 1:d60a7ce97623 | 25 | |
rolandtamas | 1:d60a7ce97623 | 26 | float x_data, y_data; |
rolandtamas | 1:d60a7ce97623 | 27 | float x_ref = 0.05f; |
rolandtamas | 1:d60a7ce97623 | 28 | float y_ref = 0.05f; |
rolandtamas | 1:d60a7ce97623 | 29 | |
rolandtamas | 1:d60a7ce97623 | 30 | printf("MMA8451 ID: %d\n", acc.getWhoAmI()); //acts as a reset message |
rolandtamas | 0:81d50ca17412 | 31 | |
rolandtamas | 0:81d50ca17412 | 32 | while (true) { |
rolandtamas | 1:d60a7ce97623 | 33 | x_data = acc.getAccX(); // detect pitch |
rolandtamas | 1:d60a7ce97623 | 34 | y_data = acc.getAccY(); //detect roll |
rolandtamas | 1:d60a7ce97623 | 35 | |
rolandtamas | 1:d60a7ce97623 | 36 | if(abs(x_data) > x_ref) |
rolandtamas | 1:d60a7ce97623 | 37 | { |
rolandtamas | 1:d60a7ce97623 | 38 | gled = 1.0f; |
rolandtamas | 1:d60a7ce97623 | 39 | printf("Pitch detected !!!\n"); |
rolandtamas | 1:d60a7ce97623 | 40 | wait(MAXBLINKSPEED * abs(x_data)); //speed of blinking changes depending on pitch position |
rolandtamas | 1:d60a7ce97623 | 41 | gled = 0.0f; |
rolandtamas | 1:d60a7ce97623 | 42 | } |
rolandtamas | 1:d60a7ce97623 | 43 | if(abs(y_data) > y_ref) |
rolandtamas | 1:d60a7ce97623 | 44 | { |
rolandtamas | 0:81d50ca17412 | 45 | rled = 1.0f; |
rolandtamas | 1:d60a7ce97623 | 46 | printf("Roll detected !!!\n"); |
rolandtamas | 1:d60a7ce97623 | 47 | wait(MAXBLINKSPEED * abs(y_data)); //speed of blinking changes depending on roll position |
rolandtamas | 0:81d50ca17412 | 48 | rled = 0.0f; |
rolandtamas | 0:81d50ca17412 | 49 | } |
rolandtamas | 1:d60a7ce97623 | 50 | if(abs(x_data) == x_ref && abs(y_data) == y_ref) |
rolandtamas | 1:d60a7ce97623 | 51 | { |
rolandtamas | 1:d60a7ce97623 | 52 | printf("Board is leveled !!!\n"); |
rolandtamas | 0:81d50ca17412 | 53 | } |
rolandtamas | 1:d60a7ce97623 | 54 | printf("X: %.2f, Y: %.2f\n", x_data, y_data); |
rolandtamas | 1:d60a7ce97623 | 55 | |
rolandtamas | 0:81d50ca17412 | 56 | } |
rolandtamas | 0:81d50ca17412 | 57 | } |