統合プログラム

Dependencies:   mbed Servo BMP180

Landing_Judgement.h

Committer:
tsubasa_nakajima
Date:
2021-10-28
Revision:
5:e1001bfc423a
Parent:
4:6e24a1b3edca
Child:
6:6fe6e3554a46

File content as of revision 5:e1001bfc423a:

#include "mbed.h"
#include "BMP180.h"
#include "math.h"
#define PIN_SDA D4
#define PIN_SCL D5

class Landing_Judgement:public BMP180{
    private:
        
    int x ,y ,n1 , n2 ;
    int landing_judgement ;
    float h,dp,dt,dp0;
    float a ,b ,dp_ave,dt_ave;
    //hは高度、dpは気圧、dtは温度、dp0は海面気圧
    
    public:
    /*ここの関数をlanding_judgementの中に入れ込んじゃいます
    //landing()が1を返せば着地、0を返せば未着地
    int landing(){
        return landing_judgement;
        }
    */
    
    //着地判定の計算を開始させる関数    
    int landing_judgement1(){
    
    BMP180 bmp180(PIN_SDA,PIN_SCL); 
    landing_judgement = 0;
    x = 0;
    y = 0;
    n1 = 0;
    n2 = 0;
    a = 0;
    b = 0;
    
    for(int i=0;i<15;i++){
        if(bmp180.ReadData(&dt,&dp)){
            a = a + dp;
            b = b + dt;
            n1 = n1 + 1;
            n2 = n2 + 1;
            wait(1);
            }
        }
    
    dp_ave = a / n1;
    dt_ave = b / n2;    
    dp0 = calculate_dp0(dp_ave,dt_ave);
    
    while(x<10){
            if(bmp180.ReadData(&dt,&dp)){
                h = calculate_h(dp0,dp,dt);
                if(h >= 30){
                x = x + 1;
                    }
                wait(1);
            }
    }
    //10秒以上高度30mにいた場合離陸判定
    
    wait(10);
      
    while(y<10){
            if(bmp180.ReadData(&dt,&dp)){
                h = calculate_h(dp0,dp,dt); 
                if(h <= 10){
                y = y + 1;
                    }
                wait(1);
            }
    }
    
    wait(5);
    
    landing_judgement = landing_judgement + 1;
    return landing_judgement;
    
    //離陸判定後、10秒以上高度10m以下にいた場合着地判定
    
}   
};