統合プログラム

Dependencies:   mbed Servo BMP180

Committer:
tsubasa_nakajima
Date:
Thu Oct 28 07:57:02 2021 +0000
Revision:
3:a583276d9fef
Parent:
1:bb89b58cfa0e
Child:
4:6e24a1b3edca
fixed error

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