mmotor / Mbed 2 deprecated MarsRover_ExoMars____

Dependencies:   EPOS2 mbed-rtos mbed

Fork of MarsRover_ExoMars by mmotor

Revision:
7:44f2f9fd2eeb
Parent:
6:3eaa420dc2f5
Child:
8:98d4028cdea6
--- a/main.cpp	Thu Oct 13 11:53:56 2016 +0000
+++ b/main.cpp	Fri Oct 14 08:33:11 2016 +0000
@@ -27,9 +27,9 @@
 int counter_s = false;
 int counter_s2 = false;
 */
-DigitalIn usv_ready(p26);
-InterruptIn buffering(p25);
-DigitalIn replace_battery(p24);
+DigitalIn usv_ready(p23);
+InterruptIn buffering(p24);
+DigitalIn replace_battery(p25);
 
 DigitalOut led1(LED1);
 DigitalOut led2(LED2);
@@ -44,16 +44,6 @@
 bool node6_homed = true;
 bool node7_homed = true;
 
-bool ausfahren_step1 = false;
-bool ausfahren_step2 = false;
-bool ausfahren_step3 = false;
-bool ausfahren_step4 = false;
-
-bool einfahren_step1 = false;
-bool einfahren_step2 = false;
-bool einfahren_step3 = false;
-bool einfahren_step4 = false;
-
 int homing = false;
 int ready = false;
 int ausfahren = false;
@@ -61,16 +51,27 @@
 int usv = false;     
 int current_step = 1;   //HOMING
 int ausfahren_step = 1;
-int einfahren_step = 1;     
+int einfahren_step = 1;
+int usv_step = 1;     
 
 void interrupt_usv(){
     current_step = 5;
-        }           
+    wait_ms(10);
+    }           
                   
 int main(){                                          ///////// Main
+        led1 = 1;
         pc.baud(9600);
         
-        wait(2);                                    //Wartezeit bis Epos2 70/10 aufgestartet ist
+        buffering.rise(&interrupt_usv);
+        
+        wait(0.5);                                    //Wartezeit bis Epos2 70/10 aufgestartet ist
+        led2 = 1;
+        wait(0.5);
+        led3 = 1;
+        wait(0.5);
+        led4 = 1;
+        wait(0.5);
         
         pc.printf("Initialisation CAN\n");
         
@@ -98,6 +99,11 @@
         MyEpos7.Reset();
         wait(0.1);
         
+        led1 = 0;
+        led2 = 0;
+        led3 = 0;
+        led4 = 0;
+        
  /*       mySwitch1.mode(PullUp);
         mySwitch2.mode(PullUp);
         mySwitch3.mode(PullUp); 
@@ -145,7 +151,6 @@
 */        
            
         while(1){ 
-        led4 = 1;
             switch (current_step){
                 case 1://HOMING:
                     led1 = 1;
@@ -160,6 +165,12 @@
                     
                     /***********************HOMING*************************/
                     
+                    if (node5_homed == false){
+                        MyEpos5.Homing(); //Kopf
+                        node5_homed = true;
+                        break;
+                        }
+                        
                     if (node1_homed == false){
                         MyEpos1.Homing(); //Solarpanel_Aussen_Links
                         node1_homed = true;
@@ -178,8 +189,11 @@
                         break;
                         }
                     
-                    if (node1_homed == true and node2_homed == false){
+                    if (node1_homed == true and node2_homed == false and node5_homed == true){
+                        MyEpos5.MoveAbsolute(-3000,500,100,100); //Kopf
                         MyEpos2.Homing(); //Solarpanel_Innen_Links
+                        MyEpos5.MoveAbsolute(500,100,50,50); //Kopf
+                        wait(3);
                         node2_homed = true;
                         break;
                         }
@@ -190,12 +204,6 @@
                         break;
                         }
                         
-                    if (node2_homed == true and node4_homed == true and node5_homed == false){
-                        MyEpos5.Homing();
-                        node5_homed = true;
-                        break;
-                        }
-                        
                     if (node7_homed == true and node6_homed == false){
                         MyEpos6.Homing();//Bohrgestell
                         node6_homed = true;
@@ -203,13 +211,15 @@
                         }
                     if (node1_homed == true and node2_homed == true and node3_homed == true and node4_homed == true and node5_homed == true and node6_homed == true and node7_homed == true){
                         current_step = 2;//BEREIT;
+                        MyEpos1.Power(0);
+                        MyEpos2.Power(0);
+                        MyEpos3.Power(0);
+                        MyEpos4.Power(0);
+                        wait(0.1);
+                        MyEpos5.Power(0);
                         }
                     
-                    MyEpos1.Power(0);
-                    MyEpos2.Power(0);
-                    MyEpos3.Power(0);
-                    MyEpos4.Power(0);
-                    MyEpos5.Power(0);
+            
                     
                     led1 = 0;
                     break;
@@ -219,6 +229,7 @@
                     led2 = 1;
                     if (MyEpos5.GetDigIn(3) == 1){
                         current_step = 6;
+                        wait_ms(10);
                         MyEpos1.Power(1);
                         MyEpos2.Power(1);
                         MyEpos3.Power(1);
@@ -235,7 +246,7 @@
                     break;
 
 
-                case 3://START_AUSFAHREN:
+/*                case 3://START_AUSFAHREN:
                     led3 = 1;
                     if(ausfahren == true){
                         MyEpos5.MoveAbsolute(0,200,500,500); //Kopf
@@ -288,27 +299,105 @@
                     led4 = 0;
                     break;                                        
                                 
- 
+ */
                 case 5://USV:
-                    while (MyEpos1.GetDigIn(1)){
-                        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
+                    led4 = 1;
+                    switch (usv_step){
+                        case 1:
+                            wait(0.1);
+/*                            MyEpos1.Power(1);
+                            MyEpos2.Power(1);
+                            MyEpos3.Power(1);
+                            MyEpos4.Power(1);
+                            MyEpos5.Power(1);
+                            MyEpos6.Power(1);
+                            MyEpos7.Power(1);
+                            wait(1);
+*/                            
+                            if (node1_homed == true){
+                                MyEpos1.MoveAbsolute(0,500,500,500); //Panel_Aussen_Links
+                                wait(0.1);
+                                }
+                            if (node3_homed == true){
+                                MyEpos3.MoveAbsolute(0,500,500,500); //Panel_Aussen_Rechts
+                                wait(0.1);
+                                }
+/*                            if (node7_homed == true){
+                                MyEpos7.MoveAbsolute(0,500,500,500); // Bohrer
+                                wait(0.1);
+                                }
+ */                           wait(0.1);
+                            usv_step = 2;
+                            break;
+                            
+                        case 2:
+                            if (node2_homed == true and MyEpos1.TargetReached()==1){
+                                wait(1);
+                                MyEpos2.MoveAbsolute(0,500,500,500); //Panel_Innen_Links
+                                wait_ms(10);
+                                }
+/*                            if (node4_homed == true and MyEpos3.TargetReached()==1){
+                                wait(1);
+                                MyEpos4.MoveAbsolute(0,500,500,500); //Panel_Innen_Links
+                                wait_ms(10);
+                                }
+                            if (node6_homed == true and MyEpos7.TargetReached()==1){
+                                wait(1);
+                                MyEpos6.MoveAbsolute(0,500,500,500); // Bohrer
+                                wait_ms(10);
                                 }
-                            }
-                        if (MyEpos7.TargetReached()==1){
-                                MyEpos6.MoveAbsolute(0,200,500,500); //Bohrgestell
+*/                            wait(1);
+                            if (MyEpos2.TargetReached()==1 /*and MyEpos4.TargetReached()==1 and MyEpos6.TargetReached()==1*/){
+                                usv_step = 3;
                                 }
+                            break;
+                            
+                        case 3:
+                                MyEpos5.MoveAbsolute(0,800,500,500); //Kopf
+                                wait(0.1);
+                                if (MyEpos5.TargetReached()==1){
+                                    usv_step = 4;
+                                    wait(0.1);
+                                    }
+                            break;
+                            
+                        case 4:
+                            /*while (MyEpos5.TargetReached()==0){
+                                wait_ms(10);
+                                }*/
+                                MyEpos1.Power(0);
+                                MyEpos2.Power(0);
+                                MyEpos3.Power(0);
+                                MyEpos4.Power(0);
+                                MyEpos5.Power(0);
+                                MyEpos6.Power(0);
+                                MyEpos7.Power(0);
+                                usv_step = 5;
+                            break;
+                            
+                        case 5:
+                            if(buffering == 1){
+                                led3 = 1;
+                                } else {
+                                    led3 = 0;
+                                    current_step=1;
+                                    usv_step=1;
+                                    ausfahren_step=1;
+                                    einfahren_step=1;
+                                    }
+                            /*if (buffering == 0){
+                                current_step = 1;
+                                usv_step = 1;
+                                }*/
+                            wait(1);
+                            break;
                         }
+                    led4 = 0;        
                     break;
         
                 case 6://Test
 //                    MyEpos5.Power(1);
+                    led3 = 1;
                     if (einfahren == false){
                         switch (ausfahren_step){
                             case 1:
@@ -319,7 +408,8 @@
                                 
                             case 2:
                                 if (MyEpos5.TargetReached()==1){
-                                    
+                                    MyEpos1.MoveAbsolute(0,500,100,100); //Panel Aussen Links
+                                    MyEpos3.MoveAbsolute(0,500,100,100); //Panel Aussen Rechts
                                     MyEpos2.MoveAbsolute(310000,500,100,100); //Panel Aussen Links
                                     ausfahren_step = 3;
                                     wait(1);
@@ -389,8 +479,8 @@
                                 
                             }
                         }
+                    led3 = 0;
                     break;
-                }//case 
-            led4 = 0;        
+                }//case         
             }//while
     }//main
\ No newline at end of file