![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
201903_14ISEで実際に使用した開放用プログラム. 使用マイコンがNUCLES-F303K8なので注意
Dependencies: mbed Madgwick MPU6050 Kalman BMP180
Diff: main.cpp
- Revision:
- 12:6a3c0e9075eb
- Parent:
- 11:c90db1500720
- Child:
- 13:3e6411bfd581
--- a/main.cpp Sun Mar 10 08:17:44 2019 +0000 +++ b/main.cpp Sun Mar 10 11:47:23 2019 +0000 @@ -65,9 +65,7 @@ } alt_gnd = _median(alt_buff,NUM_CNT_MEDIAN); wait(2.0); - pc.printf("Hello World!\r\n"); - wait(1.0); - pc.printf("f:Flight_mode_on\r\n"); + pc.printf("0,0,0,0,0\r\n"); wait(1.0); timer_data.start(); servo1_signal = 1; @@ -85,14 +83,16 @@ servo1.pulsewidth(0.0006); servo2.pulsewidth(0.0006); mpu.getAccelero(acc); - pc.printf("OPEN:%f\r\n",sqrt(pow(acc[0]/9.81,2.0)+pow(acc[1]/9.81,2.0)+pow(acc[2]/9.81,2.0))); + //pc.printf("OPEN:%f\r\n",sqrt(pow(acc[0]/9.81,2.0)+pow(acc[1]/9.81,2.0)+pow(acc[2]/9.81,2.0))); + pc.printf("0,%f,%f,0,%f\r\n",sqrt(pow(acc[0]/9.81,2.0)+pow(acc[1]/9.81,2.0)+pow(acc[2]/9.81,2.0)),(acc[1]/9.81),timer_data.read()); } if(c[0] == 'l'){ myled = 0; servo1.pulsewidth(0.0024); servo2.pulsewidth(0.0024); mpu.getAccelero(acc); - pc.printf("LOCK:%f\r\n",sqrt(pow(acc[0]/9.81,2.0)+pow(acc[1]/9.81,2.0)+pow(acc[2]/9.81,2.0))); + //pc.printf("LOCK:%f\r\n",sqrt(pow(acc[0]/9.81,2.0)+pow(acc[1]/9.81,2.0)+pow(acc[2]/9.81,2.0))); + pc.printf("0,%f,%f,0,%f\r\n",sqrt(pow(acc[0]/9.81,2.0)+pow(acc[1]/9.81,2.0)+pow(acc[2]/9.81,2.0)),(acc[1]/9.81),timer_data.read()); } if(c[0] == 'f'){ //pc.printf("flight_mode\r\n"); @@ -109,7 +109,9 @@ } acc_abs = _median(acc_buff,NUM_CNT_MEDIAN); if(timer_data.read() - t > TIME_SEND){ - pc.printf("LAUNCH,acc:%f,time:%3f,cnt:%d\r\n",acc_abs,timer_data.read(),cnt_judge); + //pc.printf("LAUNCH,acc:%f,time:%3f,cnt:%d\r\n",acc_abs,timer_data.read(),cnt_judge); + pc.printf("1,%f,%f,0,%3f\r\n",acc_abs,acc_abs,timer_data.read()); + t = timer_data.read(); } /*加速度判定*/ @@ -127,8 +129,19 @@ case RISE: while(timer_open.read() < TIME_BURNING){ - pc.printf("RISE,time from launch:%f\r\n",timer_open.read()); - wait(1.0); + for(cnt_data=0;cnt_data<NUM_CNT_MEDIAN;cnt_data++){ + alt_buff[cnt_data] = _getAlt(); + } + alt_md = _median(alt_buff,NUM_CNT_MEDIAN); + alt_md = alt_md - alt_gnd; + for(cnt_data=0;cnt_data<NUM_CNT_MEDIAN;cnt_data++){ + mpu.getAccelero(acc); + acc_buff[cnt_data] = sqrt(pow(acc[0]/9.81,2.0)+pow(acc[1]/9.81,2.0)+pow(acc[2]/9.81,2.0)); + } + acc_abs = _median(acc_buff,NUM_CNT_MEDIAN); + //pc.printf("RISE,time from launch:%f\r\n",timer_open.read()); + pc.printf("3,%f,%f,%f,%3f\r\n",acc_abs,acc_abs,alt_md,timer_open.read()); + wait(0.9); i=0; timer_data.reset(); } @@ -144,7 +157,8 @@ alt_md = _median(alt_buff,NUM_CNT_MEDIAN); alt_md = alt_md - alt_gnd; if(timer_open.read() - t > TIME_SEND){ - pc.printf("OPEN,alt:%f,time:%3f,cnt:%d\r\n",alt_md,timer_open.read(),cnt_judge); + //pc.printf("OPEN,alt:%f,time:%3f,cnt:%d\r\n",alt_md,timer_open.read(),cnt_judge); + pc.printf("15,%f,%f,%f,%3f\r\n",acc_abs,acc_abs,alt_md,timer_open.read()); t = timer_open.read(); } if(alt_md > alt_max){ @@ -158,6 +172,8 @@ //if((timer_open.read()-time_judge) - TIME_JUDGE_CNT > 0) cnt_judge=0; if(cnt_judge == CNT_JUDGE || timer_open.read() > TIME_OPEN){ Phase = RECOVERY; + pc.printf("9,0,0,0,0\r\n"); + wait(0.5); tic_gps.attach(&_SendGPS, 1.0/RATE_GPS); } break; @@ -224,7 +240,7 @@ //pc.printf("%s\r\n",gps_data); //pc.printf("Lat:%f,Lon:%f\r\ntime:%f,sat_num:%d\r\n",lat_north,lon_east,world_time,sat_num); int japan_time = int(world_time) - 9; - pc.printf("Lat:%f,Lon:%f,MAX_ALT:%f\r\n",lat_north,lon_east,alt_max); + pc.printf("Lat,%f,Lon,%f,MAX_ALT,%f\r\n",lat_north,lon_east,alt_max); for(i=0;i<2;i++){ c[i]=pc.getc(); }