統合プログラム

Dependencies:   mbed Servo BMP180

Committer:
minanao
Date:
Thu Oct 21 01:58:35 2021 +0000
Revision:
0:e7b7def631c2
Child:
1:bb89b58cfa0e
integrated program

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