Last versionnnn

Dependencies:   BLE_API HCSR04 X_NUCLEO_IDB0XA1 mbed

Fork of contest_IOT3 by Contest IOT GSE5

Committer:
Mickado
Date:
Wed Nov 04 15:02:59 2015 +0000
Revision:
6:55319ed07a08
Parent:
5:9437083564d0
Last version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bcostm 0:028fac66239d 1 #include "mbed.h"
Alex_Hochart 3:6bcdaa2636ec 2 #include "HCSR04.h"
Mickado 6:55319ed07a08 3 #include "jeu.h"
Mickado 6:55319ed07a08 4 #include "display.h"
Alex_Hochart 4:ed21ec4a79ad 5 #include <math.h>
Mickado 2:35466dfc81fe 6
Mickado 6:55319ed07a08 7
Mickado 6:55319ed07a08 8 #define ECHO_1 PA_9
Mickado 6:55319ed07a08 9 #define ECHO_2 PB_9
Mickado 6:55319ed07a08 10 #define TRIG_1 PC_7
Mickado 6:55319ed07a08 11 #define TRIG_2 PB_8
Mickado 2:35466dfc81fe 12 #define PUSH USER_BUTTON //PC_13
Mickado 2:35466dfc81fe 13 #define LED_1 LED1
bcostm 1:e9d1c42a73ae 14
Mickado 6:55319ed07a08 15 /*
Mickado 6:55319ed07a08 16 #define ECHO_1 PA_4
Mickado 6:55319ed07a08 17 #define ECHO_2 PB_3
Mickado 6:55319ed07a08 18 #define TRIG_1 PB_5
Mickado 6:55319ed07a08 19 #define TRIG_2 PA_10
Mickado 6:55319ed07a08 20 #define PUSH PA_9 //PC_13
Mickado 6:55319ed07a08 21 #define LED_1 PA_8
Mickado 6:55319ed07a08 22 */
Mickado 6:55319ed07a08 23
bcostm 1:e9d1c42a73ae 24 //------------------------------------
bcostm 1:e9d1c42a73ae 25 // Hyperterminal configuration
Alex_Hochart 4:ed21ec4a79ad 26 // 115200 bauds, 8-bit data, no parity
bcostm 1:e9d1c42a73ae 27 //------------------------------------
bcostm 1:e9d1c42a73ae 28
Mickado 2:35466dfc81fe 29
Mickado 6:55319ed07a08 30 DigitalOut led(LED_1); //Led d'état
Mickado 6:55319ed07a08 31 DigitalIn bp(PUSH);
Alex_Hochart 3:6bcdaa2636ec 32 Serial pc(USBTX, USBRX); //UART
Mickado 6:55319ed07a08 33
Mickado 2:35466dfc81fe 34
Alex_Hochart 3:6bcdaa2636ec 35 HCSR04 sensor1(TRIG_1, ECHO_1);
Alex_Hochart 3:6bcdaa2636ec 36 HCSR04 sensor2(TRIG_2, ECHO_2);
Alex_Hochart 3:6bcdaa2636ec 37
Mickado 6:55319ed07a08 38 BLE ble;
Mickado 2:35466dfc81fe 39
Mickado 6:55319ed07a08 40 void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params){
Mickado 6:55319ed07a08 41 ble.gap().startAdvertising(); // restart advertising
Alex_Hochart 4:ed21ec4a79ad 42 }
Alex_Hochart 4:ed21ec4a79ad 43
Mickado 6:55319ed07a08 44 InfosJeu jeu;
Mickado 6:55319ed07a08 45 /* ACTION POSSIBLES :
Mickado 6:55319ed07a08 46 * --> Accès aux valeurs :
Mickado 6:55319ed07a08 47 * jeu.p1_score
Mickado 6:55319ed07a08 48 * jeu.p2_score
Mickado 6:55319ed07a08 49 * jeu.chrono
Mickado 6:55319ed07a08 50 * jeu.pos1prec[30];
Mickado 6:55319ed07a08 51 * jeu.pos2prec[30];
Mickado 6:55319ed07a08 52 * jeu.pos1[30];
Mickado 6:55319ed07a08 53 * jeu.pos2[30];
Mickado 6:55319ed07a08 54 * jeu.posBallX;
Mickado 6:55319ed07a08 55 * jeu.posBallY;
Mickado 6:55319ed07a08 56 * jeu.angBall;
Mickado 6:55319ed07a08 57 * jeu.distance1;
Mickado 6:55319ed07a08 58 * jeu.distance2;
Mickado 6:55319ed07a08 59 * jeu.state;
Mickado 6:55319ed07a08 60 *
Mickado 6:55319ed07a08 61 * --> Méthodes utiles :
Mickado 6:55319ed07a08 62 * jeu.addPointP1();
Mickado 6:55319ed07a08 63 * jeu.addPointP2();
Mickado 6:55319ed07a08 64 * jeu.setChronoActive();
Mickado 6:55319ed07a08 65 * jeu.incrementeChrono();
Mickado 6:55319ed07a08 66 * jeu.stopChrono();
Mickado 6:55319ed07a08 67 * jeu.resetAndStart();
Mickado 6:55319ed07a08 68 */
Alex_Hochart 4:ed21ec4a79ad 69
bcostm 0:028fac66239d 70 int main() {
Mickado 6:55319ed07a08 71 //Initialisation des fonctions récurrentes (toutes les secondes)
Mickado 6:55319ed07a08 72 Ticker ticker;
Mickado 6:55319ed07a08 73 ticker.attach(periodicCallback, 1); // blink LED every second
Mickado 6:55319ed07a08 74 Ticker tickerChrono;
Mickado 6:55319ed07a08 75 tickerChrono.attach(&jeu, &InfosJeu::incrementeChrono, 1);
Alex_Hochart 5:9437083564d0 76
Mickado 6:55319ed07a08 77 //Initialisation du BLE
Mickado 6:55319ed07a08 78 initJeuBLE(ble);
Mickado 6:55319ed07a08 79 ble.gap().onDisconnection(disconnectionCallback);
Mickado 6:55319ed07a08 80
Mickado 6:55319ed07a08 81 //Initialisation de l'affichage
Mickado 6:55319ed07a08 82 pong_init_ttempro(pc);
Alex_Hochart 3:6bcdaa2636ec 83 pc.baud(115200);
Mickado 2:35466dfc81fe 84
Mickado 2:35466dfc81fe 85 //Boucle d'exécution du programme
Mickado 6:55319ed07a08 86 while(1) {
Mickado 6:55319ed07a08 87
Mickado 6:55319ed07a08 88 /*
Mickado 6:55319ed07a08 89 ******* Mise à jour des données BLE chaque seconde *******
Mickado 6:55319ed07a08 90 */
Mickado 6:55319ed07a08 91 if(triggerSensorPolling && ble.getGapState().connected){
Mickado 6:55319ed07a08 92 triggerSensorPolling = false; // flag indiquant qu'une seconde s'est écoulée, il faut mettre à jour les données BLE
Mickado 6:55319ed07a08 93 miseAJourBLE(ble, jeu.p1_score, jeu.p2_score, jeu.chrono);
Mickado 6:55319ed07a08 94 }else{
Mickado 6:55319ed07a08 95 ble.waitForEvent(); // low power wait for event
Mickado 6:55319ed07a08 96 }
Mickado 6:55319ed07a08 97
Mickado 6:55319ed07a08 98 /*
Mickado 6:55319ed07a08 99 ******* Mécanique de jeu ********
Mickado 6:55319ed07a08 100 */
Mickado 6:55319ed07a08 101 switch(jeu.state){
Alex_Hochart 5:9437083564d0 102 case 0 : if(bp.read() != 1){
Mickado 6:55319ed07a08 103 jeu.state = 3;
Mickado 6:55319ed07a08 104 pong_init_ttempro(pc);
Mickado 6:55319ed07a08 105 jeu.setChronoActive();
Alex_Hochart 5:9437083564d0 106 }
Alex_Hochart 5:9437083564d0 107 break;
Alex_Hochart 5:9437083564d0 108
Alex_Hochart 5:9437083564d0 109 case 3 : for(int i=0; i<=29; i++){
Mickado 6:55319ed07a08 110 jeu.pos1prec[i]= jeu.pos1[i];
Mickado 6:55319ed07a08 111 jeu.pos2prec[i]= jeu.pos2[i];
Mickado 6:55319ed07a08 112 jeu.pos1[i]= 0;
Mickado 6:55319ed07a08 113 jeu.pos2[i]= 0;
Alex_Hochart 5:9437083564d0 114 }
Mickado 6:55319ed07a08 115 jeu.distance1 = sensor1.distance(1);
Mickado 6:55319ed07a08 116 jeu.distance2 = sensor2.distance(1);
Mickado 6:55319ed07a08 117 set_pos_vector(jeu.pos1,jeu.distance1);
Mickado 6:55319ed07a08 118 set_pos_vector(jeu.pos2,jeu.distance2);
Mickado 6:55319ed07a08 119 print_cursor_ttempro(pc,jeu.pos1,jeu.pos1prec,jeu.pos2,jeu.pos2prec);
Mickado 6:55319ed07a08 120 jeu.state = set_print_ball(pc,jeu.pos1,jeu.pos2,&jeu.posBallX,&jeu.posBallY,&jeu.angBall);
Alex_Hochart 5:9437083564d0 121 break;
Alex_Hochart 5:9437083564d0 122
Mickado 6:55319ed07a08 123 case 1 : jeu.addPointP2();
Mickado 6:55319ed07a08 124 if( jeu.p2_score >= 3){
Alex_Hochart 5:9437083564d0 125 pc.printf("\033[2J"); //Efface la console
Alex_Hochart 5:9437083564d0 126 pc.printf("\033[16;60H");
Alex_Hochart 5:9437083564d0 127 pc.printf("P2 WIN ");
Mickado 6:55319ed07a08 128 jeu.stopChrono();
Mickado 6:55319ed07a08 129 jeu.reinitPosition(0, 0, 5.0, 19.0, 25.0); // (p1_score, p2_score, posBallX, posBallY, angBall)
Alex_Hochart 5:9437083564d0 130 }
Alex_Hochart 5:9437083564d0 131 else{
Alex_Hochart 5:9437083564d0 132 pc.printf("\033[2J"); //Efface la console
Alex_Hochart 5:9437083564d0 133 pc.printf("\033[10;60H");
Mickado 6:55319ed07a08 134 pc.printf("P1 : %d // P2 : %d",jeu.p1_score,jeu.p2_score);
Mickado 6:55319ed07a08 135 jeu.reinitPosition(jeu.p1_score, jeu.p2_score, 5.0, 19.0, 25.0); // (p1_score, p2_score, posBallX, posBallY, angBall)
Alex_Hochart 5:9437083564d0 136 }
Mickado 6:55319ed07a08 137 jeu.state = 0;
Alex_Hochart 5:9437083564d0 138 break;
Alex_Hochart 5:9437083564d0 139
Mickado 6:55319ed07a08 140 case 2 : jeu.addPointP1();
Mickado 6:55319ed07a08 141 if( jeu.p1_score >= 3){
Alex_Hochart 5:9437083564d0 142 pc.printf("\033[2J"); //Efface la console
Alex_Hochart 5:9437083564d0 143 pc.printf("\033[16;60H");
Alex_Hochart 5:9437083564d0 144 pc.printf("P1 WIN ");
Mickado 6:55319ed07a08 145 jeu.stopChrono();
Mickado 6:55319ed07a08 146 jeu.reinitPosition(0, 0, 124.0, 19.0, 145.0); // (p1_score, p2_score, posBallX, posBallY, angBall)
Alex_Hochart 5:9437083564d0 147 }
Alex_Hochart 5:9437083564d0 148 else{
Alex_Hochart 5:9437083564d0 149 pc.printf("\033[2J"); //Efface la console
Alex_Hochart 5:9437083564d0 150 pc.printf("\033[10;60H");
Mickado 6:55319ed07a08 151 pc.printf("P1 : %d // P2 : %d",jeu.p1_score,jeu.p2_score);
Mickado 6:55319ed07a08 152 jeu.reinitPosition(jeu.p1_score, jeu.p2_score, 124.0, 19.0, 145.0); // (p1_score, p2_score, posBallX, posBallY, angBall)
Alex_Hochart 5:9437083564d0 153 }
Mickado 6:55319ed07a08 154 jeu.state = 0;
Alex_Hochart 5:9437083564d0 155 break;
Alex_Hochart 4:ed21ec4a79ad 156 }
Mickado 6:55319ed07a08 157 wait(0.1);
Mickado 2:35466dfc81fe 158 }
bcostm 0:028fac66239d 159 }
Alex_Hochart 3:6bcdaa2636ec 160
bcostm 0:028fac66239d 161