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;
}