BITS IOT PGP 2017-18
/
mbed_blinky
-blinking LEDs using push button -motion sensor detection and printing to uart
main.cpp@0:dc6b1f4adb5a, 2018-06-17 (annotated)
- Committer:
- rakeshravula
- Date:
- Sun Jun 17 08:27:19 2018 +0000
- Revision:
- 0:dc6b1f4adb5a
- Child:
- 1:3cded0feb65d
-blinking using push button; -motion sensor and sending data to uart(not working yet)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rakeshravula | 0:dc6b1f4adb5a | 1 | #include "mbed.h" |
rakeshravula | 0:dc6b1f4adb5a | 2 | #include "LIS3DSH.h" |
rakeshravula | 0:dc6b1f4adb5a | 3 | |
rakeshravula | 0:dc6b1f4adb5a | 4 | DigitalOut myledG(PD_12); |
rakeshravula | 0:dc6b1f4adb5a | 5 | DigitalOut myledO(PD_13); |
rakeshravula | 0:dc6b1f4adb5a | 6 | DigitalOut myledR(PD_14); |
rakeshravula | 0:dc6b1f4adb5a | 7 | DigitalOut myledB(PD_15); |
rakeshravula | 0:dc6b1f4adb5a | 8 | InterruptIn button(PA_0); |
rakeshravula | 0:dc6b1f4adb5a | 9 | Serial uart(PC_6,PC_7); |
rakeshravula | 0:dc6b1f4adb5a | 10 | LIS3DSH acc(PA_7, PA_6, PA_5, PE_3); |
rakeshravula | 0:dc6b1f4adb5a | 11 | |
rakeshravula | 0:dc6b1f4adb5a | 12 | char buttondetect = 0; |
rakeshravula | 0:dc6b1f4adb5a | 13 | void buttonIsr() |
rakeshravula | 0:dc6b1f4adb5a | 14 | { |
rakeshravula | 0:dc6b1f4adb5a | 15 | buttondetect = 1; |
rakeshravula | 0:dc6b1f4adb5a | 16 | } |
rakeshravula | 0:dc6b1f4adb5a | 17 | int main() { |
rakeshravula | 0:dc6b1f4adb5a | 18 | uart.baud(9600); |
rakeshravula | 0:dc6b1f4adb5a | 19 | |
rakeshravula | 0:dc6b1f4adb5a | 20 | button.fall(&buttonIsr); |
rakeshravula | 0:dc6b1f4adb5a | 21 | |
rakeshravula | 0:dc6b1f4adb5a | 22 | int16_t X, Y, Z; //signed integer variables for raw X,Y,Z values |
rakeshravula | 0:dc6b1f4adb5a | 23 | float roll, pitch; //float variables for angles |
rakeshravula | 0:dc6b1f4adb5a | 24 | |
rakeshravula | 0:dc6b1f4adb5a | 25 | if(acc.Detect() != 1) { |
rakeshravula | 0:dc6b1f4adb5a | 26 | uart.printf("LIS3DSH Acceleromoter not detected!\n"); |
rakeshravula | 0:dc6b1f4adb5a | 27 | while(1){ }; |
rakeshravula | 0:dc6b1f4adb5a | 28 | } |
rakeshravula | 0:dc6b1f4adb5a | 29 | while(1) { |
rakeshravula | 0:dc6b1f4adb5a | 30 | wait(0.5); |
rakeshravula | 0:dc6b1f4adb5a | 31 | static char counter = 0; |
rakeshravula | 0:dc6b1f4adb5a | 32 | acc.ReadData(&X, &Y, &Z); //read X, Y, Z values |
rakeshravula | 0:dc6b1f4adb5a | 33 | acc.ReadAngles(&roll, &pitch); //read roll and pitch angles |
rakeshravula | 0:dc6b1f4adb5a | 34 | uart.printf("X: %d Y: %d Z: %d\n", X, Y, Z); |
rakeshravula | 0:dc6b1f4adb5a | 35 | uart.printf("Roll: %f Pitch: %f\n", roll, pitch); |
rakeshravula | 0:dc6b1f4adb5a | 36 | |
rakeshravula | 0:dc6b1f4adb5a | 37 | if(buttondetect){ |
rakeshravula | 0:dc6b1f4adb5a | 38 | buttondetect = 0; |
rakeshravula | 0:dc6b1f4adb5a | 39 | switch(counter){ |
rakeshravula | 0:dc6b1f4adb5a | 40 | case 0: |
rakeshravula | 0:dc6b1f4adb5a | 41 | myledG = !myledG; |
rakeshravula | 0:dc6b1f4adb5a | 42 | break; |
rakeshravula | 0:dc6b1f4adb5a | 43 | case 1: |
rakeshravula | 0:dc6b1f4adb5a | 44 | myledO = !myledO; |
rakeshravula | 0:dc6b1f4adb5a | 45 | break; |
rakeshravula | 0:dc6b1f4adb5a | 46 | case 2: |
rakeshravula | 0:dc6b1f4adb5a | 47 | myledR = !myledR; |
rakeshravula | 0:dc6b1f4adb5a | 48 | break; |
rakeshravula | 0:dc6b1f4adb5a | 49 | case 3: |
rakeshravula | 0:dc6b1f4adb5a | 50 | myledB = !myledB; |
rakeshravula | 0:dc6b1f4adb5a | 51 | break; |
rakeshravula | 0:dc6b1f4adb5a | 52 | } |
rakeshravula | 0:dc6b1f4adb5a | 53 | |
rakeshravula | 0:dc6b1f4adb5a | 54 | counter++; |
rakeshravula | 0:dc6b1f4adb5a | 55 | if(counter >= 4) |
rakeshravula | 0:dc6b1f4adb5a | 56 | counter =0; |
rakeshravula | 0:dc6b1f4adb5a | 57 | |
rakeshravula | 0:dc6b1f4adb5a | 58 | // wait(0.5); |
rakeshravula | 0:dc6b1f4adb5a | 59 | } |
rakeshravula | 0:dc6b1f4adb5a | 60 | } |
rakeshravula | 0:dc6b1f4adb5a | 61 | } |