![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
統合プログラム
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以下にいた場合着地判定 } };