Last

Dependencies:   BLE_API HCSR04 X_NUCLEO_IDB0XA1 mbed

Fork of contest_IOT5 by Contest IOT GSE5

Revision:
4:ed21ec4a79ad
Parent:
3:6bcdaa2636ec
Child:
5:9437083564d0
--- 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);
     }
 }