2017能代宇宙イベント開放用プログラム(kobayashi)

Dependencies:   mbed MS5607 MPU6050

Committer:
nene_kobayashi
Date:
Tue Aug 15 09:54:44 2017 +0000
Revision:
5:e5c45611bf43
Parent:
4:a44c7a8adaeb
????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nene_kobayashi 5:e5c45611bf43 1 #include <mbed.h>
nene_kobayashi 5:e5c45611bf43 2 #include <string.h>
nene_kobayashi 5:e5c45611bf43 3 #include えむぴーゆー
nene_kobayashi 5:e5c45611bf43 4 #include 卍卍エムエス卍卍
nene_kobayashi 0:027a3ffb7500 5
nene_kobayashi 5:e5c45611bf43 6 //主関数
nene_kobayashi 5:e5c45611bf43 7 void _log;
nene_kobayashi 5:e5c45611bf43 8 void _open;
nene_kobayashi 2:3a7c38279b0b 9
nene_kobayashi 5:e5c45611bf43 10 //雑関数
nene_kobayashi 5:e5c45611bf43 11 float mannaka;
nene_kobayashi 5:e5c45611bf43 12 float
nene_kobayashi 5:e5c45611bf43 13
nene_kobayashi 5:e5c45611bf43 14 #define RATE_LOG 100
nene_kobayashi 5:e5c45611bf43 15 #define RATE_OPEN 20
nene_kobayashi 1:fa1980f9b2d0 16
nene_kobayashi 5:e5c45611bf43 17 enum FHASE{SETUP=0,LAUNCH=1,RISE=3,DROP1=7,DROP2=15,LAND=16}Fhase; //二進数
nene_kobayashi 5:e5c45611bf43 18
nene_kobayashi 5:e5c45611bf43 19 //タイマー系
nene_kobayashi 5:e5c45611bf43 20 Ticker tic_log;
nene_kobayashi 5:e5c45611bf43 21 Ticker tic_open;
nene_kobayashi 5:e5c45611bf43 22 Timer time;
nene_kobayashi 4:a44c7a8adaeb 23
nene_kobayashi 4:a44c7a8adaeb 24 int main(){
nene_kobayashi 5:e5c45611bf43 25 time.start();
nene_kobayashi 5:e5c45611bf43 26 tic_open.attach(&_open , 1.0/RATE_LOG);
nene_kobayashi 5:e5c45611bf43 27 tic_open.attach(&_log , 1.0/RATE_OPEN);
nene_kobayashi 5:e5c45611bf43 28 }
nene_kobayashi 5:e5c45611bf43 29
nene_kobayashi 5:e5c45611bf43 30 void _log{
nene_kobayashi 5:e5c45611bf43 31
nene_kobayashi 4:a44c7a8adaeb 32 }
nene_kobayashi 4:a44c7a8adaeb 33
nene_kobayashi 5:e5c45611bf43 34 void _open{
nene_kobayashi 5:e5c45611bf43 35 switch(Phase){
nene_kobayashi 5:e5c45611bf43 36 case SETUP: if フライトモード解除
nene_kobayashi 5:e5c45611bf43 37 Fhase = LAUNCH;
nene_kobayashi 5:e5c45611bf43 38 break
nene_kobayashi 5:e5c45611bf43 39 case LAUNCH:
nene_kobayashi 5:e5c45611bf43 40 配列つくる(X,Y,Z)
nene_kobayashi 5:e5c45611bf43 41 タイマースタート
nene_kobayashi 5:e5c45611bf43 42 加速度とる
nene_kobayashi 5:e5c45611bf43 43 合成する
nene_kobayashi 5:e5c45611bf43 44 if 加速度(合成したもの)==一定の値
nene_kobayashi 5:e5c45611bf43 45 if (時間>=TBD){
nene_kobayashi 5:e5c45611bf43 46 カウント=0
nene_kobayashi 5:e5c45611bf43 47 }
nene_kobayashi 5:e5c45611bf43 48 if (カウント==5){
nene_kobayashi 5:e5c45611bf43 49 Fhase = RISE;
nene_kobayashi 5:e5c45611bf43 50 }
nene_kobayashi 5:e5c45611bf43 51 break
nene_kobayashi 2:3a7c38279b0b 52 case RISE:
nene_kobayashi 5:e5c45611bf43 53 タイマー
nene_kobayashi 5:e5c45611bf43 54 高度とる
nene_kobayashi 5:e5c45611bf43 55 _mannaka呼び出す
nene_kobayashi 5:e5c45611bf43 56 if (高度<=頂点){
nene_kobayashi 5:e5c45611bf43 57 カウント++
nene_kobayashi 5:e5c45611bf43 58 }
nene_kobayashi 5:e5c45611bf43 59 if (時間>=TBD){
nene_kobayashi 5:e5c45611bf43 60 カウント=0
nene_kobayashi 5:e5c45611bf43 61 }
nene_kobayashi 5:e5c45611bf43 62 if (カウント==5){
nene_kobayashi 5:e5c45611bf43 63 パラシュート開放
nene_kobayashi 5:e5c45611bf43 64 }
nene_kobayashi 5:e5c45611bf43 65 Fhase = DROP1;
nene_kobayashi 5:e5c45611bf43 66 break
nene_kobayashi 2:3a7c38279b0b 67 case DROP1:
nene_kobayashi 5:e5c45611bf43 68 タイマー
nene_kobayashi 5:e5c45611bf43 69 高度とる
nene_kobayashi 5:e5c45611bf43 70 _mannaka呼び出す
nene_kobayashi 5:e5c45611bf43 71 if (高度<=リーふぃんぐ高度){
nene_kobayashi 5:e5c45611bf43 72 カウント++
nene_kobayashi 5:e5c45611bf43 73 }
nene_kobayashi 5:e5c45611bf43 74 if (時間>=TBD){
nene_kobayashi 5:e5c45611bf43 75 カウント==0
nene_kobayashi 5:e5c45611bf43 76 }
nene_kobayashi 5:e5c45611bf43 77 if (カウント==5){
nene_kobayashi 5:e5c45611bf43 78 リーふぃんぐ開放
nene_kobayashi 5:e5c45611bf43 79 }
nene_kobayashi 5:e5c45611bf43 80 Fhase = DROP2;
nene_kobayashi 5:e5c45611bf43 81 break
nene_kobayashi 3:507d05fb5cd8 82 case DROP2:
nene_kobayashi 5:e5c45611bf43 83 if 時間==TBD
nene_kobayashi 5:e5c45611bf43 84 さーぼの電源切る
nene_kobayashi 5:e5c45611bf43 85 Fhase = LAND;
nene_kobayashi 5:e5c45611bf43 86 break
nene_kobayashi 3:507d05fb5cd8 87 case LAND:
nene_kobayashi 5:e5c45611bf43 88 break
nene_kobayashi 3:507d05fb5cd8 89 }
nene_kobayashi 2:3a7c38279b0b 90 }
nene_kobayashi 5:e5c45611bf43 91
nene_kobayashi 5:e5c45611bf43 92 float mannaka(float data[],int num){
nene_kobayashi 5:e5c45611bf43 93 float ans;
nene_kobayashi 5:e5c45611bf43 94 float *data_copy;
nene_kobayashi 5:e5c45611bf43 95 float data_copy = new float [num] //float型の配列を[num]分確保
nene_kobayashi 5:e5c45611bf43 96 memcpy(data_copy,data,sizeof(float) *num);
nene_kobayashi 5:e5c45611bf43 97 for(int i=0,i<num,i++){
nene_kobayashi 5:e5c45611bf43 98 for(int j=0,j<num+1,j++){
nene_kobayashi 5:e5c45611bf43 99 if(copy_data[j]>copy_data[j+1]){
nene_kobayashi 5:e5c45611bf43 100 int tmp = copy_data[j];
nene_kobayashi 5:e5c45611bf43 101 copy_data[j] = copy_data[j+1];
nene_kobayashi 5:e5c45611bf43 102 copy_data[j+1] = tmp;
nene_kobayashi 5:e5c45611bf43 103 }
nene_kobayashi 5:e5c45611bf43 104 }
nene_kobayashi 5:e5c45611bf43 105 }
nene_kobayashi 5:e5c45611bf43 106 if (num%2=0){
nene_kobayashi 5:e5c45611bf43 107 ans = (data_copy[num/2]+data_copy[(num/2)+1])/2;
nene_kobayashi 5:e5c45611bf43 108 }else{
nene_kobayashi 5:e5c45611bf43 109 ans = data_copy[num/2];
nene_kobayashi 5:e5c45611bf43 110 }
nene_kobayashi 5:e5c45611bf43 111 delete[] data_copy;
nene_kobayashi 5:e5c45611bf43 112 return 0;
nene_kobayashi 5:e5c45611bf43 113 }