For Contest
Dependencies: BLE_API HCSR04 X_NUCLEO_IDB0XA1 mbed
Fork of contest_IOT6 by
main.cpp@6:55319ed07a08, 2015-11-04 (annotated)
- Committer:
- Mickado
- Date:
- Wed Nov 04 15:02:59 2015 +0000
- Revision:
- 6:55319ed07a08
- Parent:
- 5:9437083564d0
- Child:
- 7:fd3602c86d75
Last version
Who changed what in which revision?
User | Revision | Line number | New 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 |