Different led blinks based on different position of the board

Dependencies:   BSP_B-L475E-IOT01 mbed

main.cpp

Committer:
iandil
Date:
2018-11-14
Revision:
1:b5009b4d5294
Parent:
0:fe91cf93b0c9

File content as of revision 1:b5009b4d5294:

#include "mbed.h"
#include "stm32l475e_iot01_accelero.h"

DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);

void blink_led(int led1On, int led2On, int led3On, int reset, DigitalOut led = LED4) {
    led1 = led1On;
    led2 = led2On;
    led3 = led3On;
    wait(1);
    if(reset) {
        led1 = 0;    
        led2 = 0;
        led3 = 0;
    } else {
        led = !led;
    }
}

int main()
{
    int16_t pDataXYZ[3] = {0};

    BSP_ACCELERO_Init();
        
    while(1) {
        BSP_ACCELERO_AccGetXYZ(pDataXYZ);
        printf("\nACCELERO_X = %d\n", pDataXYZ[0]);
        printf("ACCELERO_Y = %d\n", pDataXYZ[1]);
        printf("ACCELERO_Z = %d\n", pDataXYZ[2]);
        
        if(pDataXYZ[2] > 900 || pDataXYZ[2] < -900) { //Horizontal State
            blink_led(1, 0, 0, 0, led1);
        } else if(pDataXYZ[1] > 900 || pDataXYZ[1] < -900) { //Long Edge State
            blink_led(0, 1, 0, 0, led2);
        } else if(pDataXYZ[0] > 900 || pDataXYZ[0] < -900) { // Short Edge State
            blink_led(0, 0, 1, 0, led3);
        } else { // all other positions
            blink_led(1, 1, 1, 1);
        }
    }
}