Pennati
Dependencies: BSP_B-L475E-IOT01
main.cpp@0:9f5c6364be9c, 2018-11-09 (annotated)
- Committer:
- lucaspennati
- Date:
- Fri Nov 09 17:35:43 2018 +0000
- Revision:
- 0:9f5c6364be9c
Initial Implementation
Who changed what in which revision?
User | Revision | Line number | New 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 | } |