/** * @brief Test ACCELERATOR MEMS Hardware. * The main objective of this test is to check acceleration on 2 axis X and Y * @param None * @retval None */ void ACCELERO_MEMS_Test(void) { MEMS_SetHint(); /* Init Accelerometer Mems */ if(BSP_ACCELERO_Init() != HAL_OK) { BSP_LCD_SetTextColor(LCD_COLOR_RED); BSP_LCD_DisplayStringAt(0, 115, (uint8_t*)"Initialization problem", CENTER_MODE); BSP_LCD_DisplayStringAt(0, 130, (uint8_t*)"MEMS cannot be initialized", CENTER_MODE); return; } while (1) { ACCELERO_ReadAcc(); if(CheckForUserInput() > 0) { return; } } }
/** * @brief MEMS demo * @param None * @retval None */ void MEMS_demo(void) { MEMS_SetHint(); if (BSP_GYRO_Init() != GYRO_OK) { BSP_LCD_SetBackColor(LCD_COLOR_WHITE); BSP_LCD_SetTextColor(LCD_COLOR_RED); BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 95, (uint8_t*)"ERROR", CENTER_MODE); BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 80, (uint8_t*)"MEMS cannot be initialized", CENTER_MODE); } else { Gyroscope_DrawBackground(state); } BSP_GYRO_Reset(); while (1) { /* Read Gyro Angular data */ BSP_GYRO_GetXYZ(Buffer); /* Update autoreload and capture compare registers value */ Xval = ABS((Buffer[0])); Yval = ABS((Buffer[1])); Zval = ABS((Buffer[2])); if((Xval>Yval) && (Xval>Zval)) { if(Buffer[0] > 10000.0f) { if((state & 1) == 0) { Gyroscope_DrawBackground(1); state |= 1; HAL_Delay(1000); } } else if(Buffer[0] < -10000.0f) { if((state & 2) == 0) { Gyroscope_DrawBackground(2); state |= 2; HAL_Delay(1000); } } } else if ((Yval>Xval) && (Yval>Zval)) { if(Buffer[1] < -10000.0f) { if((state & 4) == 0) { Gyroscope_DrawBackground(4); state |= 4; HAL_Delay(1000); } } else if(Buffer[1] > 10000.0f) { if((state & 8) == 0) { Gyroscope_DrawBackground(8); state |= 8; HAL_Delay(1000); } } } else if ((Zval>Xval) && (Zval>Yval)) { if(Buffer[2] < -10000.0f) { if((state & 16) == 0) { Gyroscope_DrawBackground(16); state |= 16; HAL_Delay(1000); } } else if(Buffer[2] > 10000.0f) { if((state & 32) == 0) { Gyroscope_DrawBackground(32); state |= 32; HAL_Delay(1000); } } } if (state != 0x3F) { } else if (CheckForUserInput() > 0) { state = 0; return; } } }