統合プログラム

Dependencies:   mbed Servo BMP180

Committer:
tsubasa_nakajima
Date:
Wed Oct 27 19:11:01 2021 +0000
Revision:
1:bb89b58cfa0e
Parent:
0:e7b7def631c2
Child:
3:a583276d9fef
almost complete

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