統合プログラム
Dependencies: mbed Servo BMP180
Landing_Judgement.h@1:bb89b58cfa0e, 2021-10-27 (annotated)
- 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?
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" |
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 | } |