2017能代宇宙イベント開放用プログラム(kobayashi)
Dependencies: mbed MS5607 MPU6050
main.cpp
- Committer:
- nene_kobayashi
- Date:
- 2017-08-15
- Revision:
- 5:e5c45611bf43
- Parent:
- 4:a44c7a8adaeb
File content as of revision 5:e5c45611bf43:
#include <mbed.h> #include <string.h> #include えむぴーゆー #include 卍卍エムエス卍卍 //主関数 void _log; void _open; //雑関数 float mannaka; float #define RATE_LOG 100 #define RATE_OPEN 20 enum FHASE{SETUP=0,LAUNCH=1,RISE=3,DROP1=7,DROP2=15,LAND=16}Fhase; //二進数 //タイマー系 Ticker tic_log; Ticker tic_open; Timer time; int main(){ time.start(); tic_open.attach(&_open , 1.0/RATE_LOG); tic_open.attach(&_log , 1.0/RATE_OPEN); } void _log{ } void _open{ switch(Phase){ case SETUP: if フライトモード解除 Fhase = LAUNCH; break case LAUNCH: 配列つくる(X,Y,Z) タイマースタート 加速度とる 合成する if 加速度(合成したもの)==一定の値 if (時間>=TBD){ カウント=0 } if (カウント==5){ Fhase = RISE; } break case RISE: タイマー 高度とる _mannaka呼び出す if (高度<=頂点){ カウント++ } if (時間>=TBD){ カウント=0 } if (カウント==5){ パラシュート開放 } Fhase = DROP1; break case DROP1: タイマー 高度とる _mannaka呼び出す if (高度<=リーふぃんぐ高度){ カウント++ } if (時間>=TBD){ カウント==0 } if (カウント==5){ リーふぃんぐ開放 } Fhase = DROP2; break case DROP2: if 時間==TBD さーぼの電源切る Fhase = LAND; break case LAND: break } } float mannaka(float data[],int num){ float ans; float *data_copy; float data_copy = new float [num] //float型の配列を[num]分確保 memcpy(data_copy,data,sizeof(float) *num); for(int i=0,i<num,i++){ for(int j=0,j<num+1,j++){ if(copy_data[j]>copy_data[j+1]){ int tmp = copy_data[j]; copy_data[j] = copy_data[j+1]; copy_data[j+1] = tmp; } } } if (num%2=0){ ans = (data_copy[num/2]+data_copy[(num/2)+1])/2; }else{ ans = data_copy[num/2]; } delete[] data_copy; return 0; }