BlinkPosition

Dependencies:   BSP_B-L475E-IOT01 mbed

Committer:
alessioburatti
Date:
Fri Nov 16 11:56:52 2018 +0000
Revision:
2:d51d7f26a4e1
Parent:
1:dce931d77528
Done

Who changed what in which revision?

UserRevisionLine numberNew 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 }