USSRII Mathieu DUCROCQ
Dependencies: mbed BSP_DISCO_F746NG
main.cpp@0:11a51c9ebb09, 2021-06-15 (annotated)
- Committer:
- mducrocq
- Date:
- Tue Jun 15 10:10:18 2021 +0000
- Revision:
- 0:11a51c9ebb09
USRRII Mathieu Ducrocq
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mducrocq | 0:11a51c9ebb09 | 1 | #include "mbed.h" |
mducrocq | 0:11a51c9ebb09 | 2 | #include "MPU6050.h" |
mducrocq | 0:11a51c9ebb09 | 3 | #include "stm32746g_discovery_lcd.h" |
mducrocq | 0:11a51c9ebb09 | 4 | #include "stm32746g_discovery_ts.h" |
mducrocq | 0:11a51c9ebb09 | 5 | #include <stdlib.h> |
mducrocq | 0:11a51c9ebb09 | 6 | #include <time.h> |
mducrocq | 0:11a51c9ebb09 | 7 | |
mducrocq | 0:11a51c9ebb09 | 8 | mbed::I2C i2c(I2C_SDA, I2C_SCL); |
mducrocq | 0:11a51c9ebb09 | 9 | MPU6050 mpu(i2c); |
mducrocq | 0:11a51c9ebb09 | 10 | Serial pc(USBTX, USBRX); |
mducrocq | 0:11a51c9ebb09 | 11 | |
mducrocq | 0:11a51c9ebb09 | 12 | int main() |
mducrocq | 0:11a51c9ebb09 | 13 | { |
mducrocq | 0:11a51c9ebb09 | 14 | int timer=0; |
mducrocq | 0:11a51c9ebb09 | 15 | int difficulte=50; |
mducrocq | 0:11a51c9ebb09 | 16 | int16_t gx, gy, gz; |
mducrocq | 0:11a51c9ebb09 | 17 | char pouaint[9]; |
mducrocq | 0:11a51c9ebb09 | 18 | int points=0; |
mducrocq | 0:11a51c9ebb09 | 19 | int randome=0; |
mducrocq | 0:11a51c9ebb09 | 20 | bool isAlive=true; |
mducrocq | 0:11a51c9ebb09 | 21 | mpu.initialize(); |
mducrocq | 0:11a51c9ebb09 | 22 | bool mpu6050TestResult = mpu.testConnection(); |
mducrocq | 0:11a51c9ebb09 | 23 | if(mpu6050TestResult) { |
mducrocq | 0:11a51c9ebb09 | 24 | pc.printf("MPU6050 test passed \r\n"); |
mducrocq | 0:11a51c9ebb09 | 25 | } else { |
mducrocq | 0:11a51c9ebb09 | 26 | pc.printf("MPU6050 test failed \r\n"); |
mducrocq | 0:11a51c9ebb09 | 27 | } |
mducrocq | 0:11a51c9ebb09 | 28 | BSP_LCD_Init(); |
mducrocq | 0:11a51c9ebb09 | 29 | BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FB_START_ADDRESS); |
mducrocq | 0:11a51c9ebb09 | 30 | BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER); |
mducrocq | 0:11a51c9ebb09 | 31 | BSP_LCD_Clear(LCD_COLOR_BLACK); |
mducrocq | 0:11a51c9ebb09 | 32 | BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize()); |
mducrocq | 0:11a51c9ebb09 | 33 | TS_StateTypeDef TS_State; |
mducrocq | 0:11a51c9ebb09 | 34 | BSP_TS_GetState(&TS_State); |
mducrocq | 0:11a51c9ebb09 | 35 | while(!TS_State.touchDetected) |
mducrocq | 0:11a51c9ebb09 | 36 | { |
mducrocq | 0:11a51c9ebb09 | 37 | BSP_TS_GetState(&TS_State); |
mducrocq | 0:11a51c9ebb09 | 38 | BSP_LCD_SetTextColor(LCD_COLOR_CYAN); |
mducrocq | 0:11a51c9ebb09 | 39 | BSP_LCD_SetBackColor(LCD_COLOR_BLACK); |
mducrocq | 0:11a51c9ebb09 | 40 | BSP_LCD_SetFont(&LCD_DEFAULT_FONT); |
mducrocq | 0:11a51c9ebb09 | 41 | BSP_LCD_DisplayStringAt(0, 1, (uint8_t *)"Bienvenue dans", CENTER_MODE); |
mducrocq | 0:11a51c9ebb09 | 42 | |
mducrocq | 0:11a51c9ebb09 | 43 | BSP_LCD_SetTextColor(LCD_COLOR_MAGENTA); |
mducrocq | 0:11a51c9ebb09 | 44 | BSP_LCD_DisplayStringAt(0, 60, (uint8_t *)"ULTRA SPACE SHOOTER", CENTER_MODE); |
mducrocq | 0:11a51c9ebb09 | 45 | BSP_LCD_DisplayStringAt(0, 90, (uint8_t *)"REDEMPTION II", CENTER_MODE); |
mducrocq | 0:11a51c9ebb09 | 46 | |
mducrocq | 0:11a51c9ebb09 | 47 | BSP_LCD_SetTextColor(LCD_COLOR_BLUE); |
mducrocq | 0:11a51c9ebb09 | 48 | BSP_LCD_DisplayStringAt(0, 150, (uint8_t *)"Touchez pour commencer", CENTER_MODE); |
mducrocq | 0:11a51c9ebb09 | 49 | BSP_LCD_FillRect(10, 200, 50, 50); |
mducrocq | 0:11a51c9ebb09 | 50 | BSP_LCD_DrawHLine(70, 225, 20); |
mducrocq | 0:11a51c9ebb09 | 51 | |
mducrocq | 0:11a51c9ebb09 | 52 | BSP_LCD_SetTextColor(LCD_COLOR_RED); |
mducrocq | 0:11a51c9ebb09 | 53 | BSP_LCD_FillRect(400,200,50,50); |
mducrocq | 0:11a51c9ebb09 | 54 | BSP_LCD_DrawHLine(370, 225, 20); |
mducrocq | 0:11a51c9ebb09 | 55 | } |
mducrocq | 0:11a51c9ebb09 | 56 | BSP_LCD_Clear(LCD_COLOR_BLACK); |
mducrocq | 0:11a51c9ebb09 | 57 | int16_t posXV, posXE, posYV, posYE, posXTirV, posXTirE, posYTirV, posYTirE; |
mducrocq | 0:11a51c9ebb09 | 58 | bool canVShoot=true; |
mducrocq | 0:11a51c9ebb09 | 59 | bool canEShoot=true; |
mducrocq | 0:11a51c9ebb09 | 60 | posXV=10; |
mducrocq | 0:11a51c9ebb09 | 61 | posYV=BSP_LCD_GetYSize()/2; |
mducrocq | 0:11a51c9ebb09 | 62 | posXE=BSP_LCD_GetXSize()-60; |
mducrocq | 0:11a51c9ebb09 | 63 | posYE=BSP_LCD_GetYSize()/2; |
mducrocq | 0:11a51c9ebb09 | 64 | while(isAlive) |
mducrocq | 0:11a51c9ebb09 | 65 | { |
mducrocq | 0:11a51c9ebb09 | 66 | timer++; |
mducrocq | 0:11a51c9ebb09 | 67 | if (timer>100){ |
mducrocq | 0:11a51c9ebb09 | 68 | timer=0; |
mducrocq | 0:11a51c9ebb09 | 69 | difficulte-=1; |
mducrocq | 0:11a51c9ebb09 | 70 | } |
mducrocq | 0:11a51c9ebb09 | 71 | points++; |
mducrocq | 0:11a51c9ebb09 | 72 | sprintf((char*)pouaint,"%d pts",points); |
mducrocq | 0:11a51c9ebb09 | 73 | BSP_LCD_SetTextColor(LCD_COLOR_WHITE); |
mducrocq | 0:11a51c9ebb09 | 74 | BSP_LCD_DisplayStringAt(0, 1, (uint8_t *)&pouaint, CENTER_MODE); |
mducrocq | 0:11a51c9ebb09 | 75 | mpu.getRotation(&gx, &gy, &gz); |
mducrocq | 0:11a51c9ebb09 | 76 | TS_State.touchX[1]=12; |
mducrocq | 0:11a51c9ebb09 | 77 | HAL_Delay(difficulte); |
mducrocq | 0:11a51c9ebb09 | 78 | BSP_LCD_Clear(LCD_COLOR_BLACK); |
mducrocq | 0:11a51c9ebb09 | 79 | BSP_LCD_SetTextColor(LCD_COLOR_BLUE); |
mducrocq | 0:11a51c9ebb09 | 80 | BSP_LCD_FillRect(posXV, posYV, 40, 40); |
mducrocq | 0:11a51c9ebb09 | 81 | BSP_LCD_SetTextColor(LCD_COLOR_RED); |
mducrocq | 0:11a51c9ebb09 | 82 | BSP_LCD_FillRect(posXE, posYE, 40, 40); |
mducrocq | 0:11a51c9ebb09 | 83 | BSP_TS_GetState(&TS_State); |
mducrocq | 0:11a51c9ebb09 | 84 | srand (time(NULL)); |
mducrocq | 0:11a51c9ebb09 | 85 | randome = rand() % 2 + 1; |
mducrocq | 0:11a51c9ebb09 | 86 | if(randome==1) |
mducrocq | 0:11a51c9ebb09 | 87 | { |
mducrocq | 0:11a51c9ebb09 | 88 | posYE-=5; |
mducrocq | 0:11a51c9ebb09 | 89 | if(posYE<0) posYE=BSP_LCD_GetYSize(); |
mducrocq | 0:11a51c9ebb09 | 90 | } |
mducrocq | 0:11a51c9ebb09 | 91 | else |
mducrocq | 0:11a51c9ebb09 | 92 | { |
mducrocq | 0:11a51c9ebb09 | 93 | posYE+=5; |
mducrocq | 0:11a51c9ebb09 | 94 | if(posYE>BSP_LCD_GetYSize()) posYE=0; |
mducrocq | 0:11a51c9ebb09 | 95 | } |
mducrocq | 0:11a51c9ebb09 | 96 | if(gy<-2000) |
mducrocq | 0:11a51c9ebb09 | 97 | { |
mducrocq | 0:11a51c9ebb09 | 98 | posYV-=5; |
mducrocq | 0:11a51c9ebb09 | 99 | if(posYV<0) posYV=BSP_LCD_GetYSize(); |
mducrocq | 0:11a51c9ebb09 | 100 | } |
mducrocq | 0:11a51c9ebb09 | 101 | else if(gy>2000) |
mducrocq | 0:11a51c9ebb09 | 102 | { |
mducrocq | 0:11a51c9ebb09 | 103 | posYV+=5; |
mducrocq | 0:11a51c9ebb09 | 104 | if(posYV>BSP_LCD_GetYSize()) posYV=0; |
mducrocq | 0:11a51c9ebb09 | 105 | } |
mducrocq | 0:11a51c9ebb09 | 106 | if(TS_State.touchDetected) |
mducrocq | 0:11a51c9ebb09 | 107 | { |
mducrocq | 0:11a51c9ebb09 | 108 | if(canVShoot) |
mducrocq | 0:11a51c9ebb09 | 109 | { |
mducrocq | 0:11a51c9ebb09 | 110 | posXTirV=posXV+10; |
mducrocq | 0:11a51c9ebb09 | 111 | posYTirV=posYV+10; |
mducrocq | 0:11a51c9ebb09 | 112 | canVShoot=false; |
mducrocq | 0:11a51c9ebb09 | 113 | } |
mducrocq | 0:11a51c9ebb09 | 114 | } |
mducrocq | 0:11a51c9ebb09 | 115 | if(!canVShoot) |
mducrocq | 0:11a51c9ebb09 | 116 | { |
mducrocq | 0:11a51c9ebb09 | 117 | if(posXTirV>BSP_LCD_GetXSize()) |
mducrocq | 0:11a51c9ebb09 | 118 | { |
mducrocq | 0:11a51c9ebb09 | 119 | posXTirV=0; |
mducrocq | 0:11a51c9ebb09 | 120 | canVShoot=true; |
mducrocq | 0:11a51c9ebb09 | 121 | } |
mducrocq | 0:11a51c9ebb09 | 122 | BSP_LCD_SetTextColor(LCD_COLOR_BLUE); |
mducrocq | 0:11a51c9ebb09 | 123 | BSP_LCD_DrawHLine(posXTirV, posYTirV, 20); |
mducrocq | 0:11a51c9ebb09 | 124 | posXTirV+=20; |
mducrocq | 0:11a51c9ebb09 | 125 | } |
mducrocq | 0:11a51c9ebb09 | 126 | if(canEShoot) |
mducrocq | 0:11a51c9ebb09 | 127 | { |
mducrocq | 0:11a51c9ebb09 | 128 | posXTirE=posXE; |
mducrocq | 0:11a51c9ebb09 | 129 | posYTirE=posYE+10; |
mducrocq | 0:11a51c9ebb09 | 130 | canEShoot=false; |
mducrocq | 0:11a51c9ebb09 | 131 | } |
mducrocq | 0:11a51c9ebb09 | 132 | else |
mducrocq | 0:11a51c9ebb09 | 133 | { |
mducrocq | 0:11a51c9ebb09 | 134 | BSP_LCD_SetTextColor(LCD_COLOR_RED); |
mducrocq | 0:11a51c9ebb09 | 135 | BSP_LCD_DrawHLine(posXTirE, posYTirE, 20); |
mducrocq | 0:11a51c9ebb09 | 136 | posXTirE-=20; |
mducrocq | 0:11a51c9ebb09 | 137 | if(posXTirE<0) |
mducrocq | 0:11a51c9ebb09 | 138 | { |
mducrocq | 0:11a51c9ebb09 | 139 | canEShoot=true; |
mducrocq | 0:11a51c9ebb09 | 140 | } |
mducrocq | 0:11a51c9ebb09 | 141 | } |
mducrocq | 0:11a51c9ebb09 | 142 | |
mducrocq | 0:11a51c9ebb09 | 143 | if((posXTirV>posXE-20)&&(posXTirV<posXE+20)&&(posYTirV>posYE)&&(posYTirV<posYE+40)) |
mducrocq | 0:11a51c9ebb09 | 144 | { |
mducrocq | 0:11a51c9ebb09 | 145 | points+=10000; |
mducrocq | 0:11a51c9ebb09 | 146 | posXTirV=0; |
mducrocq | 0:11a51c9ebb09 | 147 | canVShoot=true; |
mducrocq | 0:11a51c9ebb09 | 148 | } |
mducrocq | 0:11a51c9ebb09 | 149 | |
mducrocq | 0:11a51c9ebb09 | 150 | if((posXTirE>posXV-20)&&(posXTirE<posXV+20)&&(posYTirE>posYV)&&(posYTirE<posYV+40)) |
mducrocq | 0:11a51c9ebb09 | 151 | { |
mducrocq | 0:11a51c9ebb09 | 152 | isAlive=false; |
mducrocq | 0:11a51c9ebb09 | 153 | } |
mducrocq | 0:11a51c9ebb09 | 154 | } |
mducrocq | 0:11a51c9ebb09 | 155 | BSP_LCD_Clear(LCD_COLOR_MAGENTA); |
mducrocq | 0:11a51c9ebb09 | 156 | while(true){ |
mducrocq | 0:11a51c9ebb09 | 157 | BSP_LCD_SetTextColor(LCD_COLOR_WHITE); |
mducrocq | 0:11a51c9ebb09 | 158 | BSP_LCD_DisplayStringAt(0, 5, (uint8_t *)"FIN DE PARTIE", CENTER_MODE); |
mducrocq | 0:11a51c9ebb09 | 159 | BSP_LCD_DisplayStringAt(0, 55, (uint8_t *)"NOMBRE DE POINTS :", CENTER_MODE); |
mducrocq | 0:11a51c9ebb09 | 160 | BSP_LCD_DisplayStringAt(0, 115, (uint8_t *)&pouaint, CENTER_MODE); |
mducrocq | 0:11a51c9ebb09 | 161 | } |
mducrocq | 0:11a51c9ebb09 | 162 | } |