Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: BLE_API HCSR04 X_NUCLEO_IDB0XA1 mbed
Fork of contest_IOT6 by
main.cpp
00001 #include "mbed.h" 00002 #include "HCSR04.h" 00003 #include "jeu.h" 00004 #include "display.h" 00005 #include <math.h> 00006 00007 00008 #define TRIG_1 PA_9 00009 #define TRIG_2 PB_10 00010 #define ECHO_1 PC_7 00011 #define ECHO_2 PA_8 00012 #define PUSH USER_BUTTON //PC_13 00013 #define LED_1 LED1 00014 00015 /* 00016 #define ECHO_1 PA_4 00017 #define ECHO_2 PB_3 00018 #define TRIG_1 PA_5 00019 #define TRIG_2 PA_10 00020 #define PUSH PA_9 //PC_13 00021 #define LED_1 PA_8 00022 */ 00023 00024 //------------------------------------ 00025 // Hyperterminal configuration 00026 // 115200 bauds, 8-bit data, no parity 00027 //------------------------------------ 00028 00029 00030 //DigitalOut led(LED_1); //Led d'état 00031 DigitalIn bp(PUSH); 00032 Serial pc(USBTX, USBRX); //UART 00033 00034 00035 HCSR04 sensor1(TRIG_1, ECHO_1); 00036 HCSR04 sensor2(TRIG_2, ECHO_2); 00037 00038 BLE ble; 00039 00040 void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params){ 00041 ble.gap().startAdvertising(); // restart advertising 00042 } 00043 00044 InfosJeu jeu; 00045 /* ACTION POSSIBLES : 00046 * --> Accès aux valeurs : 00047 * jeu.p1_score 00048 * jeu.p2_score 00049 * jeu.chrono 00050 * jeu.pos1prec[30]; 00051 * jeu.pos2prec[30]; 00052 * jeu.pos1[30]; 00053 * jeu.pos2[30]; 00054 * jeu.posBallX; 00055 * jeu.posBallY; 00056 * jeu.angBall; 00057 * jeu.distance1; 00058 * jeu.distance2; 00059 * jeu.state; 00060 * 00061 * --> Méthodes utiles : 00062 * jeu.addPointP1(); 00063 * jeu.addPointP2(); 00064 * jeu.setChronoActive(); 00065 * jeu.incrementeChrono(); 00066 * jeu.stopChrono(); 00067 * jeu.resetAndStart(); 00068 */ 00069 00070 int main() { 00071 //Initialisation des fonctions récurrentes (toutes les secondes) 00072 Ticker ticker; 00073 ticker.attach(periodicCallback, 1); // blink LED every second 00074 Ticker tickerChrono; 00075 tickerChrono.attach(&jeu, &InfosJeu::incrementeChrono, 1); 00076 00077 //Initialisation du BLE 00078 /* 00079 initJeuBLE(ble); 00080 ble.gap().onDisconnection(disconnectionCallback); 00081 */ 00082 00083 //Initialisation de l'affichage 00084 pong_init_ttempro(pc); 00085 pc.baud(115200); 00086 00087 //Boucle d'exécution du programme 00088 while(1) { 00089 00090 /* 00091 ******* Mise à jour des données BLE chaque seconde ******* 00092 00093 if(triggerSensorPolling && ble.getGapState().connected){ 00094 triggerSensorPolling = false; // flag indiquant qu'une seconde s'est écoulée, il faut mettre à jour les données BLE 00095 miseAJourBLE(ble, jeu.p1_score, jeu.p2_score, jeu.chrono); 00096 }else{ 00097 ble.waitForEvent(); // low power wait for event 00098 } 00099 */ 00100 /* 00101 ******* Mécanique de jeu ******** 00102 */ 00103 switch(jeu.state){ 00104 case 0 : if(bp.read() != 1){ 00105 jeu.state = 4; 00106 pong_init_ttempro(pc); 00107 } 00108 break; 00109 00110 case 4 : for(int i=0; i<=29; i++){ 00111 jeu.pos1prec[i]= jeu.pos1[i]; 00112 jeu.pos2prec[i]= jeu.pos2[i]; 00113 jeu.pos1[i]= 0; 00114 jeu.pos2[i]= 0; 00115 } 00116 jeu.distance1 = sensor1.distance(1); 00117 jeu.distance2 = sensor2.distance(1); 00118 set_pos_vector(jeu.pos1,jeu.distance1); 00119 set_pos_vector(jeu.pos2,jeu.distance2); 00120 print_cursor_ttempro(pc,jeu.pos1,jeu.pos1prec,jeu.pos2,jeu.pos2prec); 00121 print_ball(pc,&jeu.distance1,&jeu.distance2,&jeu.posBallX,&jeu.posBallY); 00122 if(bp.read() != 1){ 00123 jeu.state = 3; 00124 jeu.setChronoActive(); 00125 } 00126 break; 00127 00128 case 3 : for(int i=0; i<=29; i++){ 00129 jeu.pos1prec[i]= jeu.pos1[i]; 00130 jeu.pos2prec[i]= jeu.pos2[i]; 00131 jeu.pos1[i]= 0; 00132 jeu.pos2[i]= 0; 00133 } 00134 jeu.distance1 = sensor1.distance(1); 00135 jeu.distance2 = sensor2.distance(1); 00136 set_pos_vector(jeu.pos1,jeu.distance1); 00137 set_pos_vector(jeu.pos2,jeu.distance2); 00138 print_cursor_ttempro(pc,jeu.pos1,jeu.pos1prec,jeu.pos2,jeu.pos2prec); 00139 jeu.state = set_print_ball(pc,jeu.pos1,jeu.pos2,&jeu.posBallX,&jeu.posBallY,&jeu.angBall); 00140 break; 00141 00142 case 1 : jeu.addPointP2(); 00143 if( jeu.p2_score >= 3){ 00144 pc.printf("\033[2J"); //Efface la console 00145 pc.printf("\033[16;60H"); 00146 pc.printf("P2 WIN "); 00147 jeu.stopChrono(); 00148 jeu.reinitPosition(0, 0, 4.0, 19.0, 25.0); // (p1_score, p2_score, posBallX, posBallY, angBall) 00149 } 00150 else{ 00151 pc.printf("\033[2J"); //Efface la console 00152 pc.printf("\033[16;55H"); 00153 pc.printf("P1 : %d // P2 : %d",jeu.p1_score,jeu.p2_score); 00154 jeu.reinitPosition(jeu.p1_score, jeu.p2_score, 4.0, 19.0, 25.0); // (p1_score, p2_score, posBallX, posBallY, angBall) 00155 } 00156 jeu.state = 0; 00157 break; 00158 00159 case 2 : jeu.addPointP1(); 00160 if( jeu.p1_score >= 3){ 00161 pc.printf("\033[2J"); //Efface la console 00162 pc.printf("\033[16;60H"); 00163 pc.printf("P1 WIN "); 00164 jeu.stopChrono(); 00165 jeu.reinitPosition(0, 0, 125.0, 19.0, 145.0); // (p1_score, p2_score, posBallX, posBallY, angBall) 00166 } 00167 else{ 00168 pc.printf("\033[2J"); //Efface la console 00169 pc.printf("\033[16;55H"); 00170 pc.printf("P1 : %d // P2 : %d",jeu.p1_score,jeu.p2_score); 00171 jeu.reinitPosition(jeu.p1_score, jeu.p2_score, 125.0, 19.0, 145.0); // (p1_score, p2_score, posBallX, posBallY, angBall) 00172 } 00173 jeu.state = 0; 00174 break; 00175 } 00176 wait(0.075); 00177 } 00178 } 00179 00180
Generated on Thu Jul 14 2022 10:58:30 by
1.7.2
