-blinking LEDs using push button -motion sensor detection and printing to uart

Dependencies:   LIS3DSH mbed

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?

UserRevisionLine numberNew 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 }