simple stm32f407 discovery board mbed demo

Dependencies:   LIS3DSH mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "LIS3DSH.h"
00003 DigitalOut myledG(PD_12);
00004 DigitalOut myledO(PD_13);
00005 DigitalOut myledR(PD_14);
00006 DigitalOut myledB(PD_15);
00007 InterruptIn button(PA_0);
00008 Serial uart(PC_6,PC_7);
00009 
00010 LIS3DSH acc(PA_7, PA_6, PA_5, PE_3);
00011  //          mosi, miso, clk , cs
00012  
00013 char buttonDetectFlag=0;
00014 void buttonISr(){
00015     buttonDetectFlag=1;
00016     }
00017 int main() {
00018     uart.baud(9600);
00019     button.fall(&buttonISr);
00020      int16_t X, Y, Z;    //signed integer variables for raw X,Y,Z values
00021     float roll, pitch;  //float variables for angles
00022     
00023     if(acc.Detect() != 1) {
00024         uart.printf("LIS3DSH Acceleromoter not detected!\n");
00025         while(1){ };
00026     }
00027     
00028     while(1) {
00029         wait(0.5);  
00030         static char counter=0;
00031         acc.ReadData(&X, &Y, &Z);           //read X, Y, Z values
00032         acc.ReadAngles(&roll, &pitch);      //read roll and pitch angles
00033         uart.printf("X: %d  Y: %d  Z: %d\n", X, Y, Z);
00034         uart.printf("Roll: %f   Pitch: %f\n", roll, pitch);
00035         
00036         if(buttonDetectFlag)
00037         {
00038             buttonDetectFlag=0;
00039             if(counter==0)
00040                 myledG=!myledG;
00041             else if(counter==1)
00042                 myledO=!myledO;
00043             else if(counter==2)
00044                 myledR=!myledR;
00045             else if(counter==3)
00046                 myledB=!myledB;
00047             counter++;
00048            if(counter>=4)
00049             counter=0;         
00050         }
00051     }
00052 }