![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
._.
Dependencies: LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI GYRO_DISCO_F429ZI
Revision 0:3294aff3e5ad, committed 2021-12-15
- Comitter:
- ovcharka132
- Date:
- Wed Dec 15 16:36:39 2021 +0000
- Commit message:
- Lab 3 Embedded
Changed in this revision
diff -r 000000000000 -r 3294aff3e5ad BSP_DISCO_F429ZI.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BSP_DISCO_F429ZI.lib Wed Dec 15 16:36:39 2021 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/ovcharka132/code/BSP_DISCO_F429ZI/#d06d6759139b
diff -r 000000000000 -r 3294aff3e5ad GYRO_DISCO_F429ZI.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/GYRO_DISCO_F429ZI.lib Wed Dec 15 16:36:39 2021 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/ST/code/GYRO_DISCO_F429ZI/#dfe10fcd7524
diff -r 000000000000 -r 3294aff3e5ad LCD_DISCO_F429ZI.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LCD_DISCO_F429ZI.lib Wed Dec 15 16:36:39 2021 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/ST/code/LCD_DISCO_F429ZI/#dc55a068bc1a
diff -r 000000000000 -r 3294aff3e5ad main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Dec 15 16:36:39 2021 +0000 @@ -0,0 +1,109 @@ +#include "mbed.h" +#include "GYRO_DISCO_F429ZI.h" +#include "LCD_DISCO_F429ZI.h" +#include "stm32f429i_discovery_lcd.h" + +GYRO_DISCO_F429ZI gyro; +LCD_DISCO_F429ZI lcd; + +DigitalOut led1(LED1); + +bool isInMotion = false; + +int main() +{ + float GyroBuffer[3]; + float zero_level[3] = {0, 0, 0}; + uint8_t buffer[100]; + lcd.Init(); + lcd.DisplayStringAt(0, LINE(1), (uint8_t*)"Started", CENTER_MODE); + uint8_t tmpreg = 0; + GYRO_IO_Read(&tmpreg,I3G4250D_CTRL_REG4_ADDR,1); + switch(tmpreg & I3G4250D_FULLSCALE_SELECTION) + { + case I3G4250D_FULLSCALE_245: + lcd.DisplayStringAt(0, LINE(2), (uint8_t*)"245", CENTER_MODE); + break; + + case I3G4250D_FULLSCALE_500: + lcd.DisplayStringAt(0, LINE(2), (uint8_t*)"500", CENTER_MODE); + break; + + case I3G4250D_FULLSCALE_2000: + lcd.DisplayStringAt(0, LINE(2), (uint8_t*)"2000", CENTER_MODE); + break; + } + GYRO_IO_Read(&tmpreg, I3G4250D_CTRL_REG1_ADDR, 1); + switch(tmpreg >> 6) { + case 0: + lcd.DisplayStringAt(0, LINE(3), (uint8_t*)"95", CENTER_MODE); + break; + case 1: + lcd.DisplayStringAt(0, LINE(3), (uint8_t*)"190", CENTER_MODE); + break; + case 2: + lcd.DisplayStringAt(0, LINE(3), (uint8_t*)"380", CENTER_MODE); + break; + case 3: + lcd.DisplayStringAt(0, LINE(3), (uint8_t*)"760", CENTER_MODE); + break; + } + + for (int i = 0; i < 50; i++) { + gyro.GetXYZ(GyroBuffer); + zero_level[0] += GyroBuffer[0] / 17.5f; + zero_level[1] += GyroBuffer[1] / 17.5f; + zero_level[2] += GyroBuffer[2] / 17.5f; + + wait_ms(10); + } + for (int i = 0; i < 3; i++) + zero_level[i] /= 50; + + float noise_level = 0.0f; + for (int i = 0; i < 50; i++) { + gyro.GetXYZ(GyroBuffer); + if ((GyroBuffer[0] / 17.5f - zero_level[0]) > noise_level) { + noise_level = (GyroBuffer[1] / 17.5f - zero_level[0]); + } + else if ((GyroBuffer[0] / 17.5f - zero_level[0]) < -noise_level) { + noise_level = -(GyroBuffer[1] / 17.5f - zero_level[0]); + } + wait_ms(10); + } + sprintf((char*)buffer, "Noise %.2f", noise_level); + lcd.DisplayStringAt(0, LINE(4), buffer, CENTER_MODE); + float angle = 0.0f, prev_value = 0.0f; + float saved_angle = 0.0f; + while(1) { + // Read Gyroscope values + wait(0.02); + + gyro.GetXYZ(GyroBuffer); + float value = GyroBuffer[0] / 17.5f - zero_level[0]; + if (value >= noise_level || value <= -noise_level) { + if(value >= 0.1f) { + if(!isInMotion){ + saved_angle = angle; + } + isInMotion = true; + } + angle += (value + prev_value) / 2 * 0.0175f * 0.02f / 0.825f; + } else { + isInMotion = false; + if(fabs(saved_angle - angle) >= 45.0f){ + lcd.ClearStringLine(7); + lcd.ClearStringLine(8); + lcd.DisplayStringAt(0, LINE(7), (uint8_t*)"Gesture", CENTER_MODE); + sprintf((char*)buffer, "Angle %.3f", angle - saved_angle); + lcd.DisplayStringAt(0, LINE(8), buffer, CENTER_MODE); + } + saved_angle = angle; + } + prev_value = value; + sprintf((char*)buffer, "Angle %.3f", angle); + lcd.ClearStringLine(6); + lcd.DisplayStringAt(0, LINE(6), buffer, CENTER_MODE); + + } +} \ No newline at end of file
diff -r 000000000000 -r 3294aff3e5ad mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Dec 15 16:36:39 2021 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file