For Cansat mission mbed

Dependencies:   MU2Class RS405cb mbed myCAN_logger

Revision:
6:c206e90971e1
Parent:
5:e85af85e4985
Child:
7:6aaf33eac704
--- a/main.cpp	Sat Aug 03 09:13:53 2013 +0000
+++ b/main.cpp	Mon Aug 05 08:58:22 2013 +0000
@@ -22,10 +22,12 @@
     DigitalIn flightpin(p26);
 //for landing
     Timeout landing_timeout;
+//for mission
+    DigitalOut led1(LED1);
 
 //for pc
     #define PC_BAUD 9600
-    #define COMMUNICATION_RATE 0.3
+    #define COMMUNICATION_RATE 0.3 //sec
     void data_send(void);
    
 //for PWM
@@ -41,19 +43,17 @@
     void RHI_Scan(void);
 
 //for landing
+    #define DEADLINE 30.0 //sec
     void landing(void);
     char landing_flg=0;
     
-void landing(void){
-    landing_flg=1;
-    MyMu2.send("landing_timeout\r\n");
-}
+//for mission
+    int mission_status=0;
     
 int main() {
 //////////Init///////////////////////////////////////////////////////////////////////////////
     //for pc
         pc.baud(PC_BAUD);
-        Send_Call.attach(&data_send,COMMUNICATION_RATE);
 
     //correspondence off
         MU2_permit = 1;//off
@@ -77,8 +77,9 @@
 ///////Sequence////////////////////////////////////////////////////////////////////////
     
     //0.MU2 check
+        mission_status = 0;
         MU2_permit = 0;//on
-        wait(0.1);//wait until mu2 will be steady
+        wait(1.0);//wait until mu2 will be steady
         MyMu2.send("we will start cansat mission soon.\r\n");
         MyMu2.send("this message is MU2 confirmation.\r\n");
         MyMu2.send("we will turn off MU2 for  regulation afetr 3 sec.\r\n");
@@ -90,22 +91,36 @@
         wait(1);
         MyMu2.send("0 please check MU2 is off \r\n");
         MU2_permit = 1;//off
+        Send_Call.attach(&data_send,COMMUNICATION_RATE);
     
     //1.freeze sequence while flightpin are fixed
-        while(flightpin ==1){}       
+        mission_status = 1;
+        while(flightpin == 1){
+            led1 = !led1;
+            wait(0.5);
+        }       
         //after emission    
             MU2_permit = 0;//on
-            wait(0.1);//wait until mu2 will be steady
+            wait(0.5);//wait until mu2 will be steady
             servo.TORQUE_ON(1);
             servo.TORQUE_ON(2);
             servo.TORQUE_ON(3);
             MyMu2.send("emission finished!\r\n");
+            
+    //2.fix mechanism start
+            mission_status = 2; 
+            MyMu2.send("start fix mechanism\r\n");
+            NIKUROMU1_ON
+            wait(6.0);
+            NIKUROMU1_OFF
+            MyMu2.send("finish fix mechanism\r\n");
     
-    //2.check landing
+    //3.check landing
+        mission_status = 3; 
         int roll_data[10];
         int roll_average;
         int roll_breakup;
-        landing_timeout.attach(&landing, 30.0);
+        landing_timeout.attach(&landing, DEADLINE);
         while(landing_flg==0){
             MyMu2.send("falling...\r\n");
             roll_average=0;
@@ -126,25 +141,20 @@
     
         wait(5);//rest
         
-    //3.fix mechanism start 
-        MyMu2.send("start fix mechanism\r\n");
-        NIKUROMU1_ON
-        wait(6.0);
-        NIKUROMU1_OFF
-        MyMu2.send("finish fix mechanism\r\n");
-        
-        wait(5);//rest
-    
     //4.rotation mechanism start 
+        mission_status = 4; 
         MyMu2.send("start rotation mechanism\r\n");
         servo.TORQUE_ON(2);
         servo.Rotate_Servo_Float(2,-150.0);
-        servo.Rotate_Servo_Float(2,-150.0 + 360.0 - can.get_roll() );   
+        float theta;
+        theta = -150.0 + 360.0 - can.get_roll();
+        if(theta < 150.0){servo.Rotate_Servo_Float(2,theta);}   
         MyMu2.send("finish rotation mechanism\r\n");
         
         wait(5);//rest
     
     //5.open door   
+        mission_status = 5; 
         MyMu2.send("start opening door\r\n");   
         NIKUROMU2_ON
         wait(6.0);
@@ -154,6 +164,7 @@
         wait(5);//rest
     
     //6.develope parabolic antenna
+        mission_status = 6; 
         MyMu2.send("start developing parabolic antenna\r\n");  
         NIKUROMU3_ON
         wait(6.0);
@@ -163,10 +174,12 @@
         wait(5);//rest
     
     //7.start RHI scaning 
+        mission_status = 7; 
         MyMu2.send("start RHI scaning\r\n");
         RHI_Scan();  
         
     //8.end of sequence
+        mission_status = 8; 
         MyMu2.send("END!\r\n");
 }
 
@@ -192,7 +205,7 @@
 }
 
 void data_send(void){
-    pc.printf("%s,%s,%s,%d,%d\r\n",can.get_time(),can.get_latitude(),can.get_longitude(),can.get_NoS(),can.get_roll());
+    pc.printf("%s,%s,%s,%d,%d,%d,%d\r\n",can.get_time(),can.get_latitude(),can.get_longitude(),can.get_NoS(),can.get_roll(),can.get_pitch(),mission_status);
     
     char mu2data[100];
     mu2data[0] = *(can.get_time()+0);
@@ -240,9 +253,16 @@
     mu2data[34]=((can.get_roll()%100 - can.get_roll()%10)/10)+0x30;
     mu2data[35]=(can.get_roll()%10)+0x30;;
         
-    mu2data[36]='\r';
-    mu2data[37]='\n';
-    mu2data[38]='\0';
+    mu2data[36]= mission_status +0x30;
+    
+    mu2data[37]='\r';
+    mu2data[38]='\n';
+    mu2data[39]='\0';
         
     MyMu2.send(mu2data);
 }
+
+void landing(void){
+    landing_flg=1;
+    MyMu2.send("landing_timeout\r\n");
+}
\ No newline at end of file