BlinkPosition

Dependencies:   BSP_B-L475E-IOT01 mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }