mmotor / Mbed 2 deprecated MarsRover_ExoMars____

Dependencies:   EPOS2 mbed-rtos mbed

Fork of MarsRover_ExoMars by mmotor

Revision:
3:fbc9de097e4f
Parent:
2:0f4e77a22fd9
Child:
4:8fb30d6c2855
--- a/main.cpp	Wed Sep 21 06:52:06 2016 +0000
+++ b/main.cpp	Thu Sep 22 07:39:21 2016 +0000
@@ -7,8 +7,6 @@
 //***********************************************************************************************************************************//
 
 Serial pc(USBTX, USBRX);             // (tx, rx)
-
-
 CAN can(p9, p10);                    // Can Pin def
 
 /*
@@ -28,7 +26,9 @@
 int current_step = 1;
 int counter_s = false;
 int counter_s2 = false;
-*/     
+*/
+int ausfahren = false;
+int einfahren = false;     
                          
 int main(){                                          ///////// Main
         pc.baud(9600);
@@ -85,24 +85,24 @@
         while(1){ 
             switch (current_step){
                 case 1://HOMING:
-                    MyEpos2.Homing(); //Solarpanel_Aussen_Links
-                    MyEpos4.Homing(); //Solarpanel_Aussen_Rechts
+                    MyEpos1.Homing(); //Solarpanel_Aussen_Links
+                    MyEpos3.Homing(); //Solarpanel_Aussen_Rechts
                     MyEpos7.Homing(); //Bohrer
-                    while (MyEpos2.GetDigIn(4)!1) or (MyEpos4.GetDigIn(4)!1){ //Kontrolle ob: Solarpanels Aussen in Grundposition
+                    while (MyEpos2.GetDigIn(4)!1) or (MyEpos4.GetDigIn(4)!1){ //warten solange Solarpanels Aussen NICHT in Grundposition
                         wait(0.1);
                         }
-                    MyEpos1.Homing(); //Solarpanel_Innen_Links
-                    MyEpos3.Homing(); //Solarpanel_Innen_Rechts
+                    MyEpos2.Homing(); //Solarpanel_Innen_Links
+                    MyEpos4.Homing(); //Solarpanel_Innen_Rechts
                        
-                    while (MyEpos7.GetDigIn(4)!1){ //Kontrolle ob: Bohrer eingefahren
+                    while (MyEpos7.GetDigIn(4)!1){ //warten solange Bohrer NICHT eingefahren
                         wait(0.1);
                         }
                     MyEpos6.Homing();//Bohrgestell   
-                    while (MyEpos1.GetDigIn(4)!1) or (MyEpos3.GetDigIn(4)!1) { //Kontrolle ob: Solarpanels Innen in Grundposition
+                    while (MyEpos1.GetDigIn(4)!1) or (MyEpos3.GetDigIn(4)!1) { //warten solange Solarpanels Innen NICHT in Grundposition
                         wait(0.1);
                         }
                     MyEpos5.Homing();//Kopf
-                    while (MyEpos5.GetDigIn(4)!1) { //Kontrolle ob: Kopf in Grundposition
+                    while (MyEpos5.GetDigIn(4)!1) { //warten solange Kopf NICHT in Grundposition
                         wait(0.1);
                         }
                     current_step = 2;//BEREIT;
@@ -113,20 +113,80 @@
                     while (MyEpos6.GetDigIn(1)!1) { //Kontrolle ob: Kopf in Grundposition
                         wait_ms(10);
                         }
-                    current_step = 3;//START
+                    current_step = 3;//START_AUSFAHREN
                     break;
 
 
-                case 3://START:
-                    MyEpos2.MoveAbsolute(500,20,500,500);
-                    MyEpos4.MoveAbsolute(500,20,500,500);
+                case 3://START_AUSFAHREN:
+                    while(ausfahren == true){
+                        MyEpos5.MoveAbsolute(0,200,500,500); //Kopf
+                        if (MyEpos5.TargetReached()==1){
+                            MyEpos2.MoveAbsolute(500,200,500,500); //Panel_Innen_Links
+                            MyEpos4.MoveAbsolute(500,200,500,500); //Panel_Innen_Rechts
+                            if (MyEpos2.TargetReached()==1 && MyEpos4.TargetReached()==1){
+                                MyEpos1.MoveAbsolute(0,200,500,500); //Panel_Aussen_Links
+                                MyEpos3.MoveAbsolute(0,200,500,500); //Panel_Aussen_Rechts
+                                if (MyEpos1.TargetReached()==1 && MyEpos3.TargetReached()==1){
+                                    MyEpos6.MoveAbsolute(0,200,500,500); //Bohrgestell
+                                    if (MyEpos6.TargetReached()==1){
+                                        MyEpos7.MoveAbsolute(0,200,500,500); //Bohrer
+                                        if (MyEpos7.TargetReached()==1){
+                                            ausfahren = false;
+                                            einfahren = true;
+                                            current_step = 4;//START_EINFAHREN
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    
                     break;
         
-   
-                case 4://STATE_OFF:
+                case 4://Start_EINFAHREN
+                    while(einfahren == true){
+                        MyEpos7.MoveAbsolute(0,200,500,500); //Bohrer
+                        if (MyEpos7.TargetReached()==1){
+                            MyEpos6.MoveAbsolute(0,200,500,500); //Bohrgestell
+                            if (MyEpos6.TargetReached()==1){
+                                MyEpos1.MoveAbsolute(0,200,500,500); //Panel_Aussen_Links
+                                MyEpos3.MoveAbsolute(0,200,500,500); //Panel_Aussen_Rechts
+                                if (MyEpos1.TargetReached()==1 && MyEpos3.TargetReached()==1){
+                                    MyEpos2.MoveAbsolute(0,200,500,500); //Panel_Innen_Links
+                                    MyEpos4.MoveAbsolute(0,200,500,500); //Panel_Innen_Rechts
+                                    if (MyEpos2.TargetReached()==1 && MyEpos4.TargetReached()==1){
+                                        MyEpos5.MoveAbsolute(0,200,500,500); //Kopf
+                                        if (MyEpos5.TargetReached()==1){
+                                            einfahren = false;
+                                            current_step = 2;//Bereit
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    
+                    break;                                        
+                                
+ 
+                case 5://USV:
+                    while (MyEpos.GetDigIn()){
+                        MyEpos1.MoveAbsolute(0,200,500,500); //Panel_Aussen_Links
+                        MyEpos3.MoveAbsolute(0,200,500,500); //Panel_Aussen_Rechts
+                        MyEpos7.MoveAbsolute(0,200,500,500); // Bohrer
+                        if (MyEpos1.TargetReached()==1 && MyEpos3.TargetReached()==1){
+                            MyEpos2.MoveAbsolute(0,200,500,500); //Panel_Innen_Links
+                            MyEpos4.MoveAbsolute(0,200,500,500); //Panel_Innen_Rechts
+                            if (MyEpos2.TargetReached()==1 && MyEpos4.TargetReached()==1){
+                                MyEpos5.MoveAbsolute(0,200,500,500); //Kopf
+                            }
+                        if (MyEpos7.TargetReached()==1){
+                                MyEpos6.MoveAbsolute(0,200,500,500); //Bohrgestell
+                                }
+                        }
                     break;
         
-                case 5://ERROR2
+                case 6://ERROR2
                     break;
                 }//case         
             }//while