cansat program1
Dependencies: ADXL345 BME280 HMC5883L ITG3200 MBed_Adafruit-GPS-Library XBee agzIDLIST cansat mbed
Fork of Cansat_program4_1 by
Diff: main.cpp
- Revision:
- 23:8581b740beef
- Parent:
- 22:92408c551605
- Child:
- 24:e88f40aedb9c
diff -r 92408c551605 -r 8581b740beef main.cpp --- a/main.cpp Sat Aug 15 02:01:06 2015 +0000 +++ b/main.cpp Wed Aug 19 07:49:59 2015 +0000 @@ -1,3 +1,5 @@ + + /**********************************************/ //更新情報 @@ -216,20 +218,19 @@ if(t==r) { - //前進 - return 'f'; + return 'f'; // target_angleとrobot_angleが等しいときは前進 } else if(n == 4) { - return 'r'; + return 'r'; // target_angleとrobot_angleが正反対にあるときは右回転 } else if(n > 0 && n < 4) { if(t > r) - return 'r'; + return 'r'; // robot_angleから見て右方向にtarget_angleがあるときに右回転 else - return 'l'; + return 'l'; // robot_angleから見て左方向にtarget_angleがあるときに左回転 } else if(n > 4 && n < 8){ if(t > r) - return 'l'; + return 'l'; // robot_angleから見て左方向にtarget_angleがあるときに左回 else - return 'r'; + return 'r'; // robot_angleから見て右方向にtarget_angleがあるときに右回転 } else return 'b'; @@ -283,14 +284,14 @@ } int calc_angle(double c){ - if(c > 337.5 ||(c >=0 && c < 22.5)) return 0; - else if(c >= 22.5 && c < 67.5) return 1; - else if(c >= 67.5 && c < 112.5) return 2; - else if(c >= 112.5 && c < 157.5) return 3; - else if(c >= 157.5 && c < 202.5) return 4; - else if(c >= 202.5 && c < 247.5) return 5; - else if(c >= 247.5 && c < 292.5) return 6; - else if(c >= 292.5 && c < 337.5) return 7; + if(c > 337.5 ||(c >=0 && c < 22.5)) return 0; // 北 + else if(c >= 22.5 && c < 67.5) return 1; // 北東 + else if(c >= 67.5 && c < 112.5) return 2; // 東 + else if(c >= 112.5 && c < 157.5) return 3; // 南東 + else if(c >= 157.5 && c < 202.5) return 4; // 南 + else if(c >= 202.5 && c < 247.5) return 5; // 南西 + else if(c >= 247.5 && c < 292.5) return 6; // 西 + else if(c >= 292.5 && c < 337.5) return 7; // 北西 else return 8; } @@ -360,34 +361,30 @@ void falling(){ - cansat.set_temperature(sensor.getTemperature()); - cansat.set_pressure(sensor.getPressure()); - cansat.set_humidity(sensor.getHumidity()); + cansat.set_temperature(sensor.getTemperature()); // 取得した温度を変数に格納 + cansat.set_pressure(sensor.getPressure()); // 取得した気圧を変数に格納 + cansat.set_humidity(sensor.getHumidity()); // 取得した湿度を変数に格納 falling_print(); - if(cansat.get_pressure() >= goal_Pressure){ + if(cansat.get_pressure() >= goal_Pressure){ // 取得した気圧と閾値を比較 if(fall_flag == 0){ - nic = 1; + nic = 1; // ニクロム線を切る fall_flag = 1; sep_Timer.reset(); - //mode = 2; - //xbee.printf("my pressure is high!\n"); - //xbee.printf("remove the parachute\n"); - //xbee.printf("change mode: running\n"); } } - if(fall_flag == 1 && pressure_Timer.read_ms() >= pressure_Time){ - mode = 2; + if(fall_flag == 1 && pressure_Timer.read_ms() >= pressure_Time){ // 取得した気圧が閾値より大きく、落下してから10秒以上経過しているとき + mode = 2; // 走行モードに移る xbee.printf("my pressure is high!\n"); xbee.printf("remove the parachute\n"); xbee.printf("change mode: running\n"); } - if(fall_flag == 0 && parachute_Timer.read_ms() >= parachute_Time){ - mode = 2; - nic = 1; + if(fall_flag == 0 && parachute_Timer.read_ms() >= parachute_Time){ // 取得した気圧が閾値より小さく、落下してから30秒以上経過しているとき + mode = 2; // 走行モードに移る + nic = 1; // ニクロム線を切る xbee.printf("Time out!\n"); xbee.printf("remove the parachute\n"); wait_ms(3000);