BlinkPosition
Dependencies: BSP_B-L475E-IOT01 mbed
main.cpp
00001 #include "mbed.h" 00002 00003 #include "stm32l475e_iot01_accelero.h" 00004 00005 #define X_VALUE pDataXYZ[0] 00006 #define Y_VALUE pDataXYZ[1] 00007 #define Z_VALUE pDataXYZ[2] 00008 00009 DigitalOut led1(LED1); 00010 DigitalOut led2(LED2); 00011 DigitalOut led3(LED3); 00012 00013 int16_t pDataXYZ[3] = {0}; 00014 00015 bool is_in_range_100(int val) { 00016 return val < 100 && val > -100; 00017 } 00018 00019 bool is_in_range_900_1000(int val) { 00020 return (val < 1050 && val > 950) || (val < -950 && val > -1050); 00021 } 00022 00023 bool board_is_horizontal() { 00024 return is_in_range_100(X_VALUE) && is_in_range_100(Y_VALUE) && is_in_range_900_1000(Z_VALUE); 00025 } 00026 00027 bool board_is_vertical_short() { 00028 return is_in_range_900_1000(X_VALUE) && is_in_range_100(Y_VALUE) && is_in_range_100(Z_VALUE); 00029 } 00030 00031 bool board_is_vertical_long() { 00032 return is_in_range_100(X_VALUE) && is_in_range_900_1000(Y_VALUE) && is_in_range_100(Z_VALUE); 00033 } 00034 00035 void blink_led(DigitalOut * led){ 00036 led1 = 0; 00037 led2 = 0; 00038 led3 = 0; 00039 *led = 1; 00040 wait(1); 00041 *led = 0; 00042 } 00043 00044 void blink_all(){ 00045 led1 = 1; 00046 led2 = 1; 00047 led3 = 1; 00048 wait(1); 00049 led1 = 0; 00050 led2 = 0; 00051 led3 = 0; 00052 } 00053 00054 int main(){ 00055 BSP_ACCELERO_Init(); 00056 while(true){ 00057 BSP_ACCELERO_AccGetXYZ(pDataXYZ); 00058 bool is_vertical_long = board_is_vertical_long(); 00059 bool is_vertical_short = board_is_vertical_short(); 00060 bool is_horizontal = board_is_horizontal(); 00061 00062 if (is_vertical_long && !is_vertical_short && !is_horizontal) { 00063 blink_led(&led1); 00064 } else if (!is_vertical_long && is_vertical_short && !is_horizontal) { 00065 blink_led(&led2); 00066 } else if (!is_vertical_long && !is_vertical_short && is_horizontal) { 00067 blink_led(&led3); 00068 } else { 00069 blink_all(); 00070 } 00071 wait(1); 00072 } 00073 }
Generated on Fri Jul 29 2022 12:50:16 by 1.7.2