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
Revision 4:ed21ec4a79ad, committed 2015-10-23
- Comitter:
- Alex_Hochart
- Date:
- Fri Oct 23 14:53:46 2015 +0000
- Parent:
- 3:6bcdaa2636ec
- Commit message:
- Pong1
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 6bcdaa2636ec -r ed21ec4a79ad main.cpp --- a/main.cpp Wed Oct 14 08:58:18 2015 +0000 +++ b/main.cpp Fri Oct 23 14:53:46 2015 +0000 @@ -1,5 +1,6 @@ #include "mbed.h" #include "HCSR04.h" +#include <math.h> #define ECHO_1 PA_8 #define ECHO_2 PB_4 @@ -10,7 +11,7 @@ //------------------------------------ // Hyperterminal configuration -// 9600 bauds, 8-bit data, no parity +// 115200 bauds, 8-bit data, no parity //------------------------------------ @@ -21,7 +22,7 @@ HCSR04 sensor1(TRIG_1, ECHO_1); HCSR04 sensor2(TRIG_2, ECHO_2); -void pong_init(){ +void pong_init_ttempro(){ pc.printf("\033[2J"); //Efface la console pc.printf("\033[?25l"); //Cache le curseur @@ -42,88 +43,122 @@ } +void print_cursor_ttempro(int *pos1, int *pos1prec, int *pos2, int *pos2prec){ + for(int i=0;i<=29;i++){ + if( pos1[i] != pos1prec[i] ){ + if(pos1[i] == 1){ + pc.printf("\033[%d;3H",i+2); //Place le curseur à 0:0 + pc.printf("X"); //Place le curseur à 0:0 + } + else{ + pc.printf("\033[%d;3H",i+2); //Place le curseur à 0:0 + pc.printf(" "); //Place le curseur à 0:0 + } + } + + if( pos2[i] != pos2prec[i] ){ + if(pos2[i] == 1){ + pc.printf("\033[%d;126H",i+2); //Place le curseur à 0:0 + pc.printf("X"); //Place le curseur à 0:0 + } + else{ + pc.printf("\033[%d;126H",i+2); //Place le curseur à 0:0 + pc.printf(" "); //Place le curseur à 0:0 + } + } + } +} + +void set_pos_vector(int *pos, int distance){ + + if(distance <= 10){ + for(int i=0;i<=5;i++){ pos[i] = 1; } + } + else if(distance >= 34){ + for(int i=24;i<=29;i++){ pos[i] = 1; } + } + else{ + for(int i=(distance-10);i<=(distance-4);i++){ pos[i] = 1; } + } +} + + int main() { - int distance1; - int distance2; int pos1prec[30]; int pos2prec[30]; int pos1[30]; int pos2[30]; + double posBallX; + double posBallY; + double angBall; + int distance1; + int distance2; pc.baud(115200); - pong_init(); + pong_init_ttempro(); + posBallX = 5; + posBallY = 19; + angBall = 25; wait(1); //Initialisation de l'interruption : en appuyant sur le bouton bleu de la carte, le programme change d'état //Boucle d'exécution du programme while(1) { - led=1; - for(int i=0; i<=29; i++){ - pos1prec[i]= pos1[i]; - pos2prec[i]= pos2[i]; - pos1[i]= 0; - pos2[i]= 0; - } - distance1 = sensor1.distance(1); //Mesure de la distance - distance2 = sensor2.distance(1); //Mesure de la distance - - if(distance1 <= 10){ - for(int i=0;i<=5;i++){ - pos1[i] = 1; - } + led=1; + for(int i=0; i<=29; i++){ + pos1prec[i]= pos1[i]; + pos2prec[i]= pos2[i]; + pos1[i]= 0; + pos2[i]= 0; + } + distance1 = sensor1.distance(1); + distance2 = sensor2.distance(1); + set_pos_vector(pos1,distance1); + set_pos_vector(pos2,distance2); + print_cursor_ttempro(pos1,pos1prec,pos2,pos2prec); + pc.printf("\033[%d;%dH",(int)posBallY, (int)posBallX); //Place le curseur à 0:0 + pc.printf(" "); //Place le curseur à 0:0 + posBallX = posBallX + 2.0*cos((double)angBall*3.1415/180.0); + posBallY = posBallY - 2.0*sin((double)angBall*3.1415/180.0); + if(posBallX <= 4){ + if(pos1[(int)posBallY] == 1){ + posBallX = 8 - posBallX; + angBall = 180 - angBall; } - else if(distance1 >= 34){ - for(int i=24;i<=29;i++){ - pos1[i] = 1; - } - } - else{ - for(int i=(distance1-10);i<=(distance1-4);i++){ - pos1[i] = 1; - } - } - - - if(distance2 <= 10){ - for(int i=0;i<=5;i++){ - pos2[i] = 1; - } + else { + pc.printf("\033[2J"); //Efface la console + pc.printf("\033[16;60H"); + pc.printf("P1 Loose"); + wait(5); } - else if(distance2 >= 34){ - for(int i=24;i<=29;i++){ - pos2[i] = 1; - } + } + else if(posBallX >= 125){ + if(pos2[(int)posBallY] == 1){ + posBallX = 250 - posBallX; + angBall = 180 - angBall; + } + else { + pc.printf("\033[2J"); //Efface la console + pc.printf("\033[16;60H"); + pc.printf("P2 Loose"); + wait(5); } - else{ - for(int i=(distance2-10);i<=(distance2-4);i++){ - pos2[i] = 1; - } - } - - for(int i=0;i<=29;i++){ - if( pos1[i] != pos1prec[i] ){ - if(pos1[i] == 1){ - pc.printf("\033[%d;3H",i+2); //Place le curseur à 0:0 - pc.printf("X"); //Place le curseur à 0:0 - } - else{ - pc.printf("\033[%d;3H",i+2); //Place le curseur à 0:0 - pc.printf(" "); //Place le curseur à 0:0 - } - } - if( pos2[i] != pos2prec[i] ){ - if(pos2[i] == 1){ - pc.printf("\033[%d;126H",i+2); //Place le curseur à 0:0 - pc.printf("X"); //Place le curseur à 0:0 - } - else{ - pc.printf("\033[%d;126H",i+2); //Place le curseur à 0:0 - pc.printf(" "); //Place le curseur à 0:0 - } - } - } - wait(0.1); + } + + + if(posBallY <= 2){ + posBallY = -posBallY+4; + angBall = -angBall; + } + else if(posBallY >= 31){ + posBallY = 62 - posBallY; + angBall = -angBall; + } + pc.printf("\033[%d;%dH",(int)posBallY, (int)posBallX); //Place le curseur à 0:0 + pc.printf("o"); //Place le curseur à 0:0 + + wait(0.1); } }