Pennati

Dependencies:   BSP_B-L475E-IOT01

Committer:
lucaspennati
Date:
Fri Nov 09 17:35:43 2018 +0000
Revision:
0:9f5c6364be9c
Initial Implementation

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lucaspennati 0:9f5c6364be9c 1 #include "mbed.h"
lucaspennati 0:9f5c6364be9c 2
lucaspennati 0:9f5c6364be9c 3 #include "stm32l475e_iot01_accelero.h"
lucaspennati 0:9f5c6364be9c 4
lucaspennati 0:9f5c6364be9c 5 DigitalOut led1(LED1);
lucaspennati 0:9f5c6364be9c 6 DigitalOut led2(LED2);
lucaspennati 0:9f5c6364be9c 7 DigitalOut led3(LED3);
lucaspennati 0:9f5c6364be9c 8
lucaspennati 0:9f5c6364be9c 9 Thread blinkThread;
lucaspennati 0:9f5c6364be9c 10 Thread fetchThread;
lucaspennati 0:9f5c6364be9c 11
lucaspennati 0:9f5c6364be9c 12 static bool onLongSide;
lucaspennati 0:9f5c6364be9c 13 static bool onShortSide;
lucaspennati 0:9f5c6364be9c 14 static bool flat;
lucaspennati 0:9f5c6364be9c 15
lucaspennati 0:9f5c6364be9c 16 void updateLeds(int led_1, int led_2, int led_3) {
lucaspennati 0:9f5c6364be9c 17 led1 = led_1;
lucaspennati 0:9f5c6364be9c 18 led2 = led_2;
lucaspennati 0:9f5c6364be9c 19 led3 = led_3;
lucaspennati 0:9f5c6364be9c 20 }
lucaspennati 0:9f5c6364be9c 21
lucaspennati 0:9f5c6364be9c 22 void toggleLeds() {
lucaspennati 0:9f5c6364be9c 23 while (true) {
lucaspennati 0:9f5c6364be9c 24 if (flat) {
lucaspennati 0:9f5c6364be9c 25 led1 = !led1;
lucaspennati 0:9f5c6364be9c 26 } else if (onLongSide) {
lucaspennati 0:9f5c6364be9c 27 led2 = !led2;
lucaspennati 0:9f5c6364be9c 28 } else if (onShortSide) {
lucaspennati 0:9f5c6364be9c 29 led3 = !led3;
lucaspennati 0:9f5c6364be9c 30 } else {
lucaspennati 0:9f5c6364be9c 31 led1 = !led1;
lucaspennati 0:9f5c6364be9c 32 led2 = !led2;
lucaspennati 0:9f5c6364be9c 33 led3 = !led3;
lucaspennati 0:9f5c6364be9c 34 }
lucaspennati 0:9f5c6364be9c 35
lucaspennati 0:9f5c6364be9c 36 wait(0.2);
lucaspennati 0:9f5c6364be9c 37 }
lucaspennati 0:9f5c6364be9c 38 }
lucaspennati 0:9f5c6364be9c 39
lucaspennati 0:9f5c6364be9c 40 int main()
lucaspennati 0:9f5c6364be9c 41 {
lucaspennati 0:9f5c6364be9c 42
lucaspennati 0:9f5c6364be9c 43 int16_t pDataXYZ[3] = {0};
lucaspennati 0:9f5c6364be9c 44 BSP_ACCELERO_Init();
lucaspennati 0:9f5c6364be9c 45
lucaspennati 0:9f5c6364be9c 46 blinkThread.start(toggleLeds);
lucaspennati 0:9f5c6364be9c 47
lucaspennati 0:9f5c6364be9c 48
lucaspennati 0:9f5c6364be9c 49 while(1) {
lucaspennati 0:9f5c6364be9c 50 BSP_ACCELERO_AccGetXYZ(pDataXYZ);
lucaspennati 0:9f5c6364be9c 51
lucaspennati 0:9f5c6364be9c 52 // Readings
lucaspennati 0:9f5c6364be9c 53 int x = pDataXYZ[0];
lucaspennati 0:9f5c6364be9c 54 int y = pDataXYZ[1];
lucaspennati 0:9f5c6364be9c 55 int z = pDataXYZ[2];
lucaspennati 0:9f5c6364be9c 56
lucaspennati 0:9f5c6364be9c 57 printf("ACCELERO_X = %d\n", x);
lucaspennati 0:9f5c6364be9c 58 printf("ACCELERO_Y = %d\n", y);
lucaspennati 0:9f5c6364be9c 59 printf("ACCELERO_Z = %d\n", z);
lucaspennati 0:9f5c6364be9c 60
lucaspennati 0:9f5c6364be9c 61 onLongSide = x < 0 && y > 950 && z < 100;
lucaspennati 0:9f5c6364be9c 62 onShortSide = (x < -1000 && y < 0 && z < 100) || (x > 950 && y > 0 && z < 100);
lucaspennati 0:9f5c6364be9c 63 flat = x < 50 && x > -50 && y < 50 && y > -50 && z > 1000;
lucaspennati 0:9f5c6364be9c 64
lucaspennati 0:9f5c6364be9c 65 printf("Is on long side: %d\n", onLongSide);
lucaspennati 0:9f5c6364be9c 66 printf("Is on short side: %d\n", onShortSide);
lucaspennati 0:9f5c6364be9c 67 printf("Is on flat side: %d\n", flat);
lucaspennati 0:9f5c6364be9c 68
lucaspennati 0:9f5c6364be9c 69 if (flat) {
lucaspennati 0:9f5c6364be9c 70 updateLeds(1, 0, 0);
lucaspennati 0:9f5c6364be9c 71 } else if (onLongSide) {
lucaspennati 0:9f5c6364be9c 72 updateLeds(0, 1, 0);
lucaspennati 0:9f5c6364be9c 73 } else if (onShortSide) {
lucaspennati 0:9f5c6364be9c 74 updateLeds(0, 0, 1);
lucaspennati 0:9f5c6364be9c 75 } else {
lucaspennati 0:9f5c6364be9c 76 updateLeds(1, 1, 1);
lucaspennati 0:9f5c6364be9c 77 }
lucaspennati 0:9f5c6364be9c 78
lucaspennati 0:9f5c6364be9c 79 printf("=======================================\n");
lucaspennati 0:9f5c6364be9c 80 wait(0.2);
lucaspennati 0:9f5c6364be9c 81 }
lucaspennati 0:9f5c6364be9c 82 }