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.
Fork of contest_IOT by
main.cpp
00001 #include "mbed.h" 00002 #include "HCSR04.h" 00003 #include <math.h> 00004 00005 #define ECHO_1 PA_8 00006 #define ECHO_2 PB_4 00007 #define TRIG_1 PB_10 00008 #define TRIG_2 PB_5 00009 #define PUSH USER_BUTTON //PC_13 00010 #define LED_1 LED1 00011 00012 //------------------------------------ 00013 // Hyperterminal configuration 00014 // 115200 bauds, 8-bit data, no parity 00015 //------------------------------------ 00016 00017 00018 Serial pc(USBTX, USBRX); //UART 00019 DigitalOut led(LED_1); //Led d'état 00020 InterruptIn button(PUSH); //Bouton d'interruption 00021 00022 HCSR04 sensor1(TRIG_1, ECHO_1); 00023 HCSR04 sensor2(TRIG_2, ECHO_2); 00024 00025 void pong_init_ttempro(){ 00026 00027 pc.printf("\033[2J"); //Efface la console 00028 pc.printf("\033[?25l"); //Cache le curseur 00029 00030 for(int i=0; i <= 128 ; i++){ 00031 pc.printf("\033[0;%dH",i); //Place le curseur à 0:0 00032 pc.printf("X"); //Place le curseur à 0:0 00033 pc.printf("\033[32;%dH",i); //Place le curseur à 0:0 00034 pc.printf("X"); //Place le curseur à 0:0 00035 } 00036 00037 for(int i=0; i <= 32 ; i++){ 00038 pc.printf("\033[%d;0H",i); //Place le curseur à 0:0 00039 pc.printf("X"); //Place le curseur à 0:0 00040 pc.printf("\033[%d;128H",i); //Place le curseur à 0:0 00041 pc.printf("X"); //Place le curseur à 0:0 00042 } 00043 00044 } 00045 00046 void print_cursor_ttempro(int *pos1, int *pos1prec, int *pos2, int *pos2prec){ 00047 for(int i=0;i<=29;i++){ 00048 if( pos1[i] != pos1prec[i] ){ 00049 if(pos1[i] == 1){ 00050 pc.printf("\033[%d;3H",i+2); //Place le curseur à 0:0 00051 pc.printf("X"); //Place le curseur à 0:0 00052 } 00053 else{ 00054 pc.printf("\033[%d;3H",i+2); //Place le curseur à 0:0 00055 pc.printf(" "); //Place le curseur à 0:0 00056 } 00057 } 00058 00059 if( pos2[i] != pos2prec[i] ){ 00060 if(pos2[i] == 1){ 00061 pc.printf("\033[%d;126H",i+2); //Place le curseur à 0:0 00062 pc.printf("X"); //Place le curseur à 0:0 00063 } 00064 else{ 00065 pc.printf("\033[%d;126H",i+2); //Place le curseur à 0:0 00066 pc.printf(" "); //Place le curseur à 0:0 00067 } 00068 } 00069 } 00070 } 00071 00072 void set_pos_vector(int *pos, int distance){ 00073 00074 if(distance <= 10){ 00075 for(int i=0;i<=5;i++){ pos[i] = 1; } 00076 } 00077 else if(distance >= 34){ 00078 for(int i=24;i<=29;i++){ pos[i] = 1; } 00079 } 00080 else{ 00081 for(int i=(distance-10);i<=(distance-4);i++){ pos[i] = 1; } 00082 } 00083 } 00084 00085 00086 int main() { 00087 int pos1prec[30]; 00088 int pos2prec[30]; 00089 int pos1[30]; 00090 int pos2[30]; 00091 double posBallX; 00092 double posBallY; 00093 double angBall; 00094 int distance1; 00095 int distance2; 00096 00097 pc.baud(115200); 00098 pong_init_ttempro(); 00099 posBallX = 5; 00100 posBallY = 19; 00101 angBall = 25; 00102 wait(1); 00103 //Initialisation de l'interruption : en appuyant sur le bouton bleu de la carte, le programme change d'état 00104 00105 00106 //Boucle d'exécution du programme 00107 while(1) { 00108 led=1; 00109 for(int i=0; i<=29; i++){ 00110 pos1prec[i]= pos1[i]; 00111 pos2prec[i]= pos2[i]; 00112 pos1[i]= 0; 00113 pos2[i]= 0; 00114 } 00115 distance1 = sensor1.distance(1); 00116 distance2 = sensor2.distance(1); 00117 set_pos_vector(pos1,distance1); 00118 set_pos_vector(pos2,distance2); 00119 print_cursor_ttempro(pos1,pos1prec,pos2,pos2prec); 00120 pc.printf("\033[%d;%dH",(int)posBallY, (int)posBallX); //Place le curseur à 0:0 00121 pc.printf(" "); //Place le curseur à 0:0 00122 posBallX = posBallX + 2.0*cos((double)angBall*3.1415/180.0); 00123 posBallY = posBallY - 2.0*sin((double)angBall*3.1415/180.0); 00124 if(posBallX <= 4){ 00125 if(pos1[(int)posBallY] == 1){ 00126 posBallX = 8 - posBallX; 00127 angBall = 180 - angBall; 00128 } 00129 else { 00130 pc.printf("\033[2J"); //Efface la console 00131 pc.printf("\033[16;60H"); 00132 pc.printf("P1 Loose"); 00133 wait(5); 00134 } 00135 } 00136 else if(posBallX >= 125){ 00137 if(pos2[(int)posBallY] == 1){ 00138 posBallX = 250 - posBallX; 00139 angBall = 180 - angBall; 00140 } 00141 else { 00142 pc.printf("\033[2J"); //Efface la console 00143 pc.printf("\033[16;60H"); 00144 pc.printf("P2 Loose"); 00145 wait(5); 00146 } 00147 } 00148 00149 00150 if(posBallY <= 2){ 00151 posBallY = -posBallY+4; 00152 angBall = -angBall; 00153 } 00154 else if(posBallY >= 31){ 00155 posBallY = 62 - posBallY; 00156 angBall = -angBall; 00157 } 00158 pc.printf("\033[%d;%dH",(int)posBallY, (int)posBallX); //Place le curseur à 0:0 00159 pc.printf("o"); //Place le curseur à 0:0 00160 00161 wait(0.1); 00162 } 00163 } 00164 00165
Generated on Thu Jul 21 2022 11:32:36 by
