2017能代宇宙イベント開放用プログラム(kobayashi)
Dependencies: mbed MS5607 MPU6050
main.cpp@5:e5c45611bf43, 2017-08-15 (annotated)
- Committer:
- nene_kobayashi
- Date:
- Tue Aug 15 09:54:44 2017 +0000
- Revision:
- 5:e5c45611bf43
- Parent:
- 4:a44c7a8adaeb
????????????
Who changed what in which revision?
User | Revision | Line number | New 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 | } |