統合プログラム

Dependencies:   mbed Servo BMP180

Committer:
tsubasa_nakajima
Date:
Thu Oct 28 13:50:27 2021 +0000
Revision:
6:6fe6e3554a46
Parent:
5:e1001bfc423a
fixed indicate

Who changed what in which revision?

UserRevisionLine numberNew contents of line
minanao 0:e7b7def631c2 1 #include "mbed.h"
minanao 0:e7b7def631c2 2 #include "BMP180.h"
tsubasa_nakajima 6:6fe6e3554a46 3 #include "calculate.h"
tsubasa_nakajima 3:a583276d9fef 4 #define PIN_SDA D4
tsubasa_nakajima 3:a583276d9fef 5 #define PIN_SCL D5
tsubasa_nakajima 3:a583276d9fef 6
minanao 0:e7b7def631c2 7 class Landing_Judgement:public BMP180{
minanao 0:e7b7def631c2 8 private:
tsubasa_nakajima 1:bb89b58cfa0e 9
minanao 0:e7b7def631c2 10 int x ,y ,n1 , n2 ;
tsubasa_nakajima 3:a583276d9fef 11 int landing_judgement ;
minanao 0:e7b7def631c2 12 float h,dp,dt,dp0;
minanao 0:e7b7def631c2 13 float a ,b ,dp_ave,dt_ave;
minanao 0:e7b7def631c2 14 //hは高度、dpは気圧、dtは温度、dp0は海面気圧
minanao 0:e7b7def631c2 15
minanao 0:e7b7def631c2 16 public:
minanao 0:e7b7def631c2 17 /*ここの関数をlanding_judgementの中に入れ込んじゃいます
minanao 0:e7b7def631c2 18 //landing()が1を返せば着地、0を返せば未着地
minanao 0:e7b7def631c2 19 int landing(){
minanao 0:e7b7def631c2 20 return landing_judgement;
minanao 0:e7b7def631c2 21 }
minanao 0:e7b7def631c2 22 */
minanao 0:e7b7def631c2 23
minanao 0:e7b7def631c2 24 //着地判定の計算を開始させる関数
tsubasa_nakajima 6:6fe6e3554a46 25 int land(){
tsubasa_nakajima 4:6e24a1b3edca 26
tsubasa_nakajima 4:6e24a1b3edca 27 BMP180 bmp180(PIN_SDA,PIN_SCL);
tsubasa_nakajima 3:a583276d9fef 28 landing_judgement = 0;
tsubasa_nakajima 3:a583276d9fef 29 x = 0;
tsubasa_nakajima 3:a583276d9fef 30 y = 0;
tsubasa_nakajima 3:a583276d9fef 31 n1 = 0;
tsubasa_nakajima 3:a583276d9fef 32 n2 = 0;
tsubasa_nakajima 3:a583276d9fef 33 a = 0;
tsubasa_nakajima 3:a583276d9fef 34 b = 0;
minanao 0:e7b7def631c2 35
tsubasa_nakajima 3:a583276d9fef 36 for(int i=0;i<15;i++){
minanao 0:e7b7def631c2 37 if(bmp180.ReadData(&dt,&dp)){
minanao 0:e7b7def631c2 38 a = a + dp;
minanao 0:e7b7def631c2 39 b = b + dt;
minanao 0:e7b7def631c2 40 n1 = n1 + 1;
minanao 0:e7b7def631c2 41 n2 = n2 + 1;
minanao 0:e7b7def631c2 42 wait(1);
minanao 0:e7b7def631c2 43 }
minanao 0:e7b7def631c2 44 }
minanao 0:e7b7def631c2 45
minanao 0:e7b7def631c2 46 dp_ave = a / n1;
minanao 0:e7b7def631c2 47 dt_ave = b / n2;
minanao 0:e7b7def631c2 48 dp0 = calculate_dp0(dp_ave,dt_ave);
minanao 0:e7b7def631c2 49
minanao 0:e7b7def631c2 50 while(x<10){
minanao 0:e7b7def631c2 51 if(bmp180.ReadData(&dt,&dp)){
minanao 0:e7b7def631c2 52 h = calculate_h(dp0,dp,dt);
minanao 0:e7b7def631c2 53 if(h >= 30){
minanao 0:e7b7def631c2 54 x = x + 1;
minanao 0:e7b7def631c2 55 }
minanao 0:e7b7def631c2 56 wait(1);
minanao 0:e7b7def631c2 57 }
minanao 0:e7b7def631c2 58 }
minanao 0:e7b7def631c2 59 //10秒以上高度30mにいた場合離陸判定
minanao 0:e7b7def631c2 60
minanao 0:e7b7def631c2 61 wait(10);
minanao 0:e7b7def631c2 62
minanao 0:e7b7def631c2 63 while(y<10){
minanao 0:e7b7def631c2 64 if(bmp180.ReadData(&dt,&dp)){
minanao 0:e7b7def631c2 65 h = calculate_h(dp0,dp,dt);
minanao 0:e7b7def631c2 66 if(h <= 10){
minanao 0:e7b7def631c2 67 y = y + 1;
minanao 0:e7b7def631c2 68 }
minanao 0:e7b7def631c2 69 wait(1);
minanao 0:e7b7def631c2 70 }
minanao 0:e7b7def631c2 71 }
minanao 0:e7b7def631c2 72
minanao 0:e7b7def631c2 73 wait(5);
minanao 0:e7b7def631c2 74
minanao 0:e7b7def631c2 75 landing_judgement = landing_judgement + 1;
minanao 0:e7b7def631c2 76 return landing_judgement;
minanao 0:e7b7def631c2 77
minanao 0:e7b7def631c2 78 //離陸判定後、10秒以上高度10m以下にいた場合着地判定
minanao 0:e7b7def631c2 79
tsubasa_nakajima 4:6e24a1b3edca 80 }
tsubasa_nakajima 4:6e24a1b3edca 81 };