BlinkPosition
Dependencies: BSP_B-L475E-IOT01 mbed
main.cpp@2:d51d7f26a4e1, 2018-11-16 (annotated)
- Committer:
- alessioburatti
- Date:
- Fri Nov 16 11:56:52 2018 +0000
- Revision:
- 2:d51d7f26a4e1
- Parent:
- 1:dce931d77528
Done
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lmottola | 0:0cc3bd737dcb | 1 | #include "mbed.h" |
lmottola | 0:0cc3bd737dcb | 2 | |
lmottola | 0:0cc3bd737dcb | 3 | #include "stm32l475e_iot01_accelero.h" |
lmottola | 0:0cc3bd737dcb | 4 | |
alessioburatti | 2:d51d7f26a4e1 | 5 | #define X_VALUE pDataXYZ[0] |
alessioburatti | 2:d51d7f26a4e1 | 6 | #define Y_VALUE pDataXYZ[1] |
alessioburatti | 2:d51d7f26a4e1 | 7 | #define Z_VALUE pDataXYZ[2] |
lmottola | 0:0cc3bd737dcb | 8 | |
alessioburatti | 2:d51d7f26a4e1 | 9 | DigitalOut led1(LED1); |
alessioburatti | 2:d51d7f26a4e1 | 10 | DigitalOut led2(LED2); |
alessioburatti | 2:d51d7f26a4e1 | 11 | DigitalOut led3(LED3); |
lmottola | 0:0cc3bd737dcb | 12 | |
alessioburatti | 2:d51d7f26a4e1 | 13 | int16_t pDataXYZ[3] = {0}; |
alessioburatti | 2:d51d7f26a4e1 | 14 | |
alessioburatti | 2:d51d7f26a4e1 | 15 | bool is_in_range_100(int val) { |
alessioburatti | 2:d51d7f26a4e1 | 16 | return val < 100 && val > -100; |
alessioburatti | 2:d51d7f26a4e1 | 17 | } |
lmottola | 0:0cc3bd737dcb | 18 | |
alessioburatti | 2:d51d7f26a4e1 | 19 | bool is_in_range_900_1000(int val) { |
alessioburatti | 2:d51d7f26a4e1 | 20 | return (val < 1050 && val > 950) || (val < -950 && val > -1050); |
alessioburatti | 2:d51d7f26a4e1 | 21 | } |
lmottola | 0:0cc3bd737dcb | 22 | |
alessioburatti | 2:d51d7f26a4e1 | 23 | bool board_is_horizontal() { |
alessioburatti | 2:d51d7f26a4e1 | 24 | return is_in_range_100(X_VALUE) && is_in_range_100(Y_VALUE) && is_in_range_900_1000(Z_VALUE); |
alessioburatti | 2:d51d7f26a4e1 | 25 | } |
lmottola | 0:0cc3bd737dcb | 26 | |
alessioburatti | 2:d51d7f26a4e1 | 27 | bool board_is_vertical_short() { |
alessioburatti | 2:d51d7f26a4e1 | 28 | return is_in_range_900_1000(X_VALUE) && is_in_range_100(Y_VALUE) && is_in_range_100(Z_VALUE); |
alessioburatti | 2:d51d7f26a4e1 | 29 | } |
lmottola | 0:0cc3bd737dcb | 30 | |
alessioburatti | 2:d51d7f26a4e1 | 31 | bool board_is_vertical_long() { |
alessioburatti | 2:d51d7f26a4e1 | 32 | return is_in_range_100(X_VALUE) && is_in_range_900_1000(Y_VALUE) && is_in_range_100(Z_VALUE); |
alessioburatti | 2:d51d7f26a4e1 | 33 | } |
lmottola | 0:0cc3bd737dcb | 34 | |
alessioburatti | 2:d51d7f26a4e1 | 35 | void blink_led(DigitalOut * led){ |
alessioburatti | 2:d51d7f26a4e1 | 36 | led1 = 0; |
alessioburatti | 2:d51d7f26a4e1 | 37 | led2 = 0; |
alessioburatti | 2:d51d7f26a4e1 | 38 | led3 = 0; |
alessioburatti | 2:d51d7f26a4e1 | 39 | *led = 1; |
alessioburatti | 2:d51d7f26a4e1 | 40 | wait(1); |
alessioburatti | 2:d51d7f26a4e1 | 41 | *led = 0; |
alessioburatti | 2:d51d7f26a4e1 | 42 | } |
lmottola | 0:0cc3bd737dcb | 43 | |
alessioburatti | 2:d51d7f26a4e1 | 44 | void blink_all(){ |
alessioburatti | 2:d51d7f26a4e1 | 45 | led1 = 1; |
alessioburatti | 2:d51d7f26a4e1 | 46 | led2 = 1; |
alessioburatti | 2:d51d7f26a4e1 | 47 | led3 = 1; |
alessioburatti | 2:d51d7f26a4e1 | 48 | wait(1); |
alessioburatti | 2:d51d7f26a4e1 | 49 | led1 = 0; |
alessioburatti | 2:d51d7f26a4e1 | 50 | led2 = 0; |
alessioburatti | 2:d51d7f26a4e1 | 51 | led3 = 0; |
alessioburatti | 2:d51d7f26a4e1 | 52 | } |
lmottola | 0:0cc3bd737dcb | 53 | |
alessioburatti | 2:d51d7f26a4e1 | 54 | int main(){ |
alessioburatti | 2:d51d7f26a4e1 | 55 | BSP_ACCELERO_Init(); |
alessioburatti | 2:d51d7f26a4e1 | 56 | while(true){ |
lmottola | 0:0cc3bd737dcb | 57 | BSP_ACCELERO_AccGetXYZ(pDataXYZ); |
alessioburatti | 2:d51d7f26a4e1 | 58 | bool is_vertical_long = board_is_vertical_long(); |
alessioburatti | 2:d51d7f26a4e1 | 59 | bool is_vertical_short = board_is_vertical_short(); |
alessioburatti | 2:d51d7f26a4e1 | 60 | bool is_horizontal = board_is_horizontal(); |
alessioburatti | 2:d51d7f26a4e1 | 61 | |
alessioburatti | 2:d51d7f26a4e1 | 62 | if (is_vertical_long && !is_vertical_short && !is_horizontal) { |
alessioburatti | 2:d51d7f26a4e1 | 63 | blink_led(&led1); |
alessioburatti | 2:d51d7f26a4e1 | 64 | } else if (!is_vertical_long && is_vertical_short && !is_horizontal) { |
alessioburatti | 2:d51d7f26a4e1 | 65 | blink_led(&led2); |
alessioburatti | 2:d51d7f26a4e1 | 66 | } else if (!is_vertical_long && !is_vertical_short && is_horizontal) { |
alessioburatti | 2:d51d7f26a4e1 | 67 | blink_led(&led3); |
alessioburatti | 2:d51d7f26a4e1 | 68 | } else { |
alessioburatti | 2:d51d7f26a4e1 | 69 | blink_all(); |
alessioburatti | 2:d51d7f26a4e1 | 70 | } |
lmottola | 0:0cc3bd737dcb | 71 | wait(1); |
lmottola | 0:0cc3bd737dcb | 72 | } |
lmottola | 0:0cc3bd737dcb | 73 | } |