For Cansat mission mbed
Dependencies: MU2Class RS405cb mbed myCAN_logger
Diff: main.cpp
- Revision:
- 6:c206e90971e1
- Parent:
- 5:e85af85e4985
- Child:
- 7:6aaf33eac704
diff -r e85af85e4985 -r c206e90971e1 main.cpp --- 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