![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
統合プログラム
Dependencies: mbed Servo BMP180
Landing_Judgement.h@3:a583276d9fef, 2021-10-28 (annotated)
- 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?
User | Revision | Line number | New 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 | } |