cansat program (version 1)
Dependencies: ADXL345_I2C BME280 Cansat2016 MBed_Adafruit-GPS-Library VNH5019 mbed
Fork of Cansat2016_v1 by
Diff: main.cpp
- Revision:
- 4:40fe9bdb34fc
- Parent:
- 3:3d5f5e6ef385
diff -r 3d5f5e6ef385 -r 40fe9bdb34fc main.cpp --- a/main.cpp Thu Jul 28 07:08:19 2016 +0000 +++ b/main.cpp Sat Aug 27 01:53:55 2016 +0000 @@ -5,8 +5,8 @@ #include "MBed_Adafruit_GPS.h" // target GPS -const double target_x = 139.939062, target_y = 37.522337; - +//const double target_x = 139.988727, target_y = 40.142708; +const double target_x = 139.987270, target_y = 40.142732; //****************************************** // // pin setting @@ -18,7 +18,8 @@ Serial xbee(p13,p14); // Compass -DigitalIn compass[4] = {p12, p11, p8, p7}; +DigitalIn compass[4] = {p7, p8, p11, p12}; +//DigitalIn compass[4] = {p12, p11, p8, p7}; // Pressure BME280 pressure(p9, p10); // MOtor @@ -26,7 +27,7 @@ DigitalIn short_in(p19); DigitalOut short_out(p20); -DigitalInOut nic(p5); +DigitalOut nic(p5); //****************************************** @@ -51,6 +52,8 @@ int running_flag = 0; // stuck int stuck_flag = 0; +// stop +int stop_count = 0; // previous distance and ronot compass double d=0.0; @@ -60,9 +63,11 @@ Timer GPS_Timer; const int GPS_time = 1000; Timer fall_Timer; -const int fall_time = 3000; +const int fall_time = 30000; Timer action_Timer; const int action_time = 500; +Timer stop_Timer; +const int stop_time = 30000; Timer stuck_Timer; const int stuck_time = 5000; Timer back_Timer; @@ -116,6 +121,7 @@ xbee.printf("remove the parachute\n"); wait_ms(3000); nic = 0; + wait_ms(3000); mode = 2; action_Timer.start(); xbee.printf("-----------RUNNING MODE-----------\n"); @@ -160,10 +166,12 @@ // finish a forward running if(running_flag == 20) { cansat.set_speed(128); + stop_Timer.start(); stuck_Timer.start(); back_Timer.start(); } + // if stuck if(stuck_flag == 1) { if(back_Timer.read_ms() <= 10000) { if(back_Timer.read_ms()<= back_time) { @@ -182,19 +190,22 @@ // around the target if(cansat.get_distance() < 0.5) { + cansat.set_action('s'); + //stop_count ++; + } else { + stop_Timer.reset(); + } + + if(stop_Timer.read_ms() >= stop_time) { mode = 100; xbee.printf("-----------STOP MODE-----------\n"); } - if(stuck_flag != 1) { // stuck check if(!(d-0.15 <= cansat.get_distance() && cansat.get_distance() <= d+0.15)) { stuck_Timer.reset(); } - /*if(c != cansat.get_compass('r')) { - stuck_Timer.reset(); - }*/ // stuck if(stuck_Timer.read_ms() >= stuck_time) { @@ -242,6 +253,8 @@ myGPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); myGPS.sendCommand(PGCMD_ANTENNA); + wait_ms(1000); + GPS_Timer.start(); // target GPS @@ -253,7 +266,7 @@ nic = 0; - xbee.getc(); + //xbee.getc(); xbee.printf("start\n"); xbee.printf("-----------STANDBY MODE-----------\n"); cansat.set_action('s');