![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Here
Dependencies: Hexi_KW40Z Hexi_OLED_SSD1351 nRF24L01 FXOS8700
Diff: main.cpp
- Revision:
- 7:46729d931f26
- Parent:
- 5:09837d22b28f
- Child:
- 8:5532a9c895be
- Child:
- 10:3a13cb84e64f
--- a/main.cpp Mon Mar 13 16:04:14 2017 +0000 +++ b/main.cpp Mon Mar 13 17:44:15 2017 +0000 @@ -19,6 +19,7 @@ void StopHaptic(void const *n); void txTask(void); void accelero(void); +void drawAccel(void); void displayHome(); void screenHandler(uint8_t screen); @@ -27,20 +28,20 @@ DigitalOut blueLed(LED3,1); DigitalOut haptic(PTB9); -/* Define timer for haptic feedback */ +// Define timer for haptic feedback RtosTimer hapticTimer(StopHaptic, osTimerOnce); -/* */ +// FXOS8700 accel(PTC11, PTC10); -/* Instantiate the Hexi KW40Z Driver (UART TX, UART RX) */ +// Instantiate the Hexi KW40Z Driver (UART TX, UART RX) KW40Z kw40z_device(PTE24, PTE25); Serial pc(USBTX, USBRX); // Serial interface -/* Instantiate the SSD1351 OLED Driver */ -SSD1351 oled(PTB22,PTB21,PTC13,PTB20,PTE6, PTD15); /* (MOSI,SCLK,POWER,CS,RST,DC) */ +// Instantiate the SSD1351 OLED Driver +SSD1351 oled(PTB22,PTB21,PTC13,PTB20,PTE6, PTD15); // (MOSI,SCLK,POWER,CS,RST,DC) oled_text_properties_t textProperties = {0}; -/* Instantiate the nRF24L01P Driver */ +// Instantiate the nRF24L01P Driver nRF24L01P my_nrf24l01p(PTC6,PTC7,PTC5,PTC4,PTB2,NC); // mosi, miso, sck, csn, ce, irq -/* Text Buffer */ +// Text Buffer char text1[20]; // Text Buffer for dynamic value displayed char text2[20]; // Text Buffer for dynamic value displayed char text3[20]; // Text Buffer for dynamic value displayed @@ -55,7 +56,7 @@ char rxData[TRANSFER_SIZE]; char txData[TRANSFER_SIZE]; -/* Pointer for the image to be displayed */ +// Pointer for the image to be displayed const uint8_t *SafeBMP = HexiSafe96_bmp; const uint8_t *HeartBMP = HeartRate_bmp; const uint8_t *FallBMP = FallDet_bmp; @@ -64,12 +65,12 @@ const uint8_t *HeartPageBMP = HeartRatePage_bmp; -/****************************Call Back Functions*******************************/ -/*Enter Button */ +//***************************Call Back Functions****************************** +//Enter Button void ButtonRight(void) { - // All screens other than 1 have either and enter button - // or a home buttom. + // All screens other than 1 have either and enter button + // or a home buttom. if(screenNum != 1) { StartHaptic(); switch(screenNum) { @@ -102,7 +103,7 @@ } } -/*Back Button */ +//Back Button void ButtonLeft(void) { if(screenNum > 0) { @@ -112,8 +113,7 @@ if(screenNum == 3 || screenNum == 4 || screenNum == 5) { screenNum = screenNum - 2; accelerometer = false; - } - else { + } else { screenNum--; } screenHandler(screenNum); @@ -121,8 +121,8 @@ } -/*Advances to Heartrate only when user -is on Hexisafe screen */ +//Advances to Heartrate only when user +//is on Hexisafe screen void ButtonUp(void) { if (screenNum == 1) { @@ -134,8 +134,8 @@ } -/*Advances to Fall Detection only when user -is on Hexisafe screen */ +//Advances to Fall Detection only when user +//is on Hexisafe screen void ButtonDown(void) { if (screenNum == 1) { @@ -147,45 +147,42 @@ } -/***********************End of Call Back Functions*****************************/ +//**********************End of Call Back Functions**************************** -/********************************Main******************************************/ +//*******************************Main***************************************** int main() { - /* Wait Sequence in the beginning for board to be reset then placed in mini docking station*/ + // Wait Sequence in the beginning for board to be reset then placed in mini docking station blueLed=1; - /* Get OLED Class Default Text Properties */ + // Get OLED Class Default Text Properties oled.GetTextProperties(&textProperties); - /* Register callbacks to application functions */ + // Register callbacks to application functions kw40z_device.attach_buttonLeft(&ButtonLeft); kw40z_device.attach_buttonRight(&ButtonRight); kw40z_device.attach_buttonUp(&ButtonUp); kw40z_device.attach_buttonDown(&ButtonDown); - /* Change font color to white */ + // Change font color to white textProperties.fontColor = COLOR_WHITE; textProperties.alignParam = OLED_TEXT_ALIGN_CENTER; oled.SetTextProperties(&textProperties); - /*Displays the Home Screen*/ + //Displays the Home Screen displayHome(); while (true) { - if(accelerometer ==true) - { - accelero(); - } + accelero(); redLed = 1 ; Thread::wait(50); } } -/******************************End of Main*************************************/ +//*****************************End of Main************************************ //Intiates Vibration void StartHaptic(void) { @@ -235,7 +232,7 @@ } case 5: { //Switching to FallPageBMP - accelerometer = true; + drawAccel(); break; } default: { @@ -249,69 +246,83 @@ } -void accelero(void){ +void accelero(void) +{ // Configure Accelerometer FXOS8700, Magnetometer FXOS8700 accel.accel_config(); - oled.DrawImage(FallPageBMP,0,0); + //oled.DrawImage(FallPageBMP,0,0); + int count = 0;// count data reading for accelerometer // Fill 96px by 96px Screen with 96px by 96px Image starting at x=0,y=0 - while (screenNum == 5) - { - - accel.acquire_accel_data_g(accel_data); - accel_rms = sqrt(((accel_data[0]*accel_data[0])+(accel_data[1]*accel_data[1])+(accel_data[2]*accel_data[2]))/3); - printf("Accelerometer \tX-Axis %4.2f \tY-Axis %4.2f \tZ-Axis %4.2f \tRMS %4.2f\n\r",accel_data[0],accel_data[1],accel_data[2],accel_rms); - wait(0.01); - ax = accel_data[0]; - ay = accel_data[1]; - az = accel_data[2]; - /* Get OLED Class Default Text Properties */ - oled_text_properties_t textProperties = {0}; - oled.GetTextProperties(&textProperties); - - /* Set text properties to white and right aligned for the dynamic text */ - textProperties.fontColor = COLOR_BLUE; - textProperties.alignParam = OLED_TEXT_ALIGN_LEFT; - oled.SetTextProperties(&textProperties); - - /* Display Legends */ - strcpy((char *) text1,"X-Axis (g):"); - oled.Label((uint8_t *)text1,5,26); - - /* Format the value */ - sprintf(text1,"%4.2f",ax); - /* Display time reading in 35px by 15px textbox at(x=55, y=40) */ - oled.TextBox((uint8_t *)text1,70,26,20,15); //Increase textbox for more digits + while (1) { - /* Set text properties to white and right aligned for the dynamic text */ - textProperties.fontColor = COLOR_GREEN; - textProperties.alignParam = OLED_TEXT_ALIGN_LEFT; - oled.SetTextProperties(&textProperties); - - /* Display Legends */ - strcpy((char *) text2,"Y-Axis (g):"); - oled.Label((uint8_t *)text2,5,43); - - /* Format the value */ - sprintf(text2,"%4.2f",ay); - /* Display time reading in 35px by 15px textbox at(x=55, y=40) */ - oled.TextBox((uint8_t *)text2,70,43,20,15); //Increase textbox for more digits - - /* Set text properties to white and right aligned for the dynamic text */ - textProperties.fontColor = COLOR_RED; - textProperties.alignParam = OLED_TEXT_ALIGN_LEFT; - oled.SetTextProperties(&textProperties); - - /* Display Legends */ - strcpy((char *) text3,"Z-Axis (g):"); - oled.Label((uint8_t *)text3,5,60); - - /* Format the value */ - sprintf(text3,"%4.2f",az); - /* Display time reading in 35px by 15px textbox at(x=55, y=40) */ - oled.TextBox((uint8_t *)text3,70,60,20,15); //Increase textbox for more digits - - redLed = !redLed ; - Thread::wait(1000); - } + accel.acquire_accel_data_g(accel_data); + accel_rms = sqrt(((accel_data[0]*accel_data[0])+(accel_data[1]*accel_data[1])+(accel_data[2]*accel_data[2]))/3); + printf("%i %4.2f\n\r",count,accel_rms); + count++; + wait(0.01); + greenLed = !greenLed ; + Thread::wait(200); + } } +void drawAccel(void){ + + + oled.DrawImage(FallPageBMP,0,0); + while(true){ + ax = accel_data[0]; + ay = accel_data[1]; + az = accel_data[2]; + // Get OLED Class Default Text Properties + oled_text_properties_t textProperties = {0}; + oled.GetTextProperties(&textProperties); + + // Set text properties to white and right aligned for the dynamic text + textProperties.fontColor = COLOR_BLUE; + textProperties.alignParam = OLED_TEXT_ALIGN_LEFT; + oled.SetTextProperties(&textProperties); + + // Display Legends + strcpy((char *) text1,"X-Axis (g):"); + oled.Label((uint8_t *)text1,5,26); + + // Format the value + sprintf(text1,"%4.2f",ax); + // Display time reading in 35px by 15px textbox at(x=55, y=40) + oled.TextBox((uint8_t *)text1,70,26,20,15); //Increase textbox for more digits + + // Set text properties to white and right aligned for the dynamic text + textProperties.fontColor = COLOR_GREEN; + textProperties.alignParam = OLED_TEXT_ALIGN_LEFT; + oled.SetTextProperties(&textProperties); + + // Display Legends + strcpy((char *) text2,"Y-Axis (g):"); + oled.Label((uint8_t *)text2,5,43); + + // Format the value + sprintf(text2,"%4.2f",ay); + // Display time reading in 35px by 15px textbox at(x=55, y=40) + oled.TextBox((uint8_t *)text2,70,43,20,15); //Increase textbox for more digits + + // Set text properties to white and right aligned for the dynamic text + textProperties.fontColor = COLOR_RED; + textProperties.alignParam = OLED_TEXT_ALIGN_LEFT; + oled.SetTextProperties(&textProperties); + + // Display Legends + strcpy((char *) text3,"Z-Axis (g):"); + oled.Label((uint8_t *)text3,5,60); + + // Format the value + sprintf(text3,"%4.2f",az); + // Display time reading in 35px by 15px textbox at(x=55, y=40) + oled.TextBox((uint8_t *)text3,70,60,20,15); //Increase textbox for more digits + + Thread::wait(200); + + } + + +} +