USSRII Mathieu DUCROCQ

Dependencies:   mbed BSP_DISCO_F746NG

Committer:
mducrocq
Date:
Tue Jun 15 10:10:18 2021 +0000
Revision:
0:11a51c9ebb09
USRRII Mathieu Ducrocq

Who changed what in which revision?

UserRevisionLine numberNew 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 }