![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
修正済みby皆川
Dependencies: mbed Servo cansat_integrated_2 BMP180
Dependents: cansat_integrated_2
main.cpp@2:d2cb6b50a8c4, 2021-10-27 (annotated)
- Committer:
- tsubasa_nakajima
- Date:
- Wed Oct 27 20:59:02 2021 +0000
- Revision:
- 2:d2cb6b50a8c4
- Parent:
- 1:bb89b58cfa0e
- Child:
- 3:a583276d9fef
still has bug
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" |
tsubasa_nakajima | 1:bb89b58cfa0e | 3 | #include "direction.h" |
tsubasa_nakajima | 2:d2cb6b50a8c4 | 4 | #include "math.h" |
minanao | 0:e7b7def631c2 | 5 | #define PIN_SDA D4 |
minanao | 0:e7b7def631c2 | 6 | #define PIN_SCL D5 |
minanao | 0:e7b7def631c2 | 7 | |
tsubasa_nakajima | 2:d2cb6b50a8c4 | 8 | GPS gps(D1, D0); |
minanao | 0:e7b7def631c2 | 9 | DigitalOut Nichrome(A6); |
minanao | 0:e7b7def631c2 | 10 | BMP180 bmp180(PIN_SDA,PIN_SCL); |
minanao | 0:e7b7def631c2 | 11 | double bias_la=0,bias_lo=0; |
tsubasa_nakajima | 1:bb89b58cfa0e | 12 | |
minanao | 0:e7b7def631c2 | 13 | int landing_judgement(){ |
tsubasa_nakajima | 1:bb89b58cfa0e | 14 | |
tsubasa_nakajima | 1:bb89b58cfa0e | 15 | int x ,y ,n1 , n2 ; |
tsubasa_nakajima | 1:bb89b58cfa0e | 16 | int landing_judgement=0 ; |
tsubasa_nakajima | 1:bb89b58cfa0e | 17 | float h,dp,dt,dp0; |
tsubasa_nakajima | 1:bb89b58cfa0e | 18 | float a ,b ,dp_ave,dt_ave; |
tsubasa_nakajima | 1:bb89b58cfa0e | 19 | |
tsubasa_nakajima | 1:bb89b58cfa0e | 20 | bmp180.Initialize(27,BMP180_OSS_ULTRA_LOW_POWER);//27は府大の海抜高度 |
tsubasa_nakajima | 1:bb89b58cfa0e | 21 | |
tsubasa_nakajima | 1:bb89b58cfa0e | 22 | for(int i=0;i<15;i++){ |
minanao | 0:e7b7def631c2 | 23 | if(bmp180.ReadData(&dt,&dp)){ |
minanao | 0:e7b7def631c2 | 24 | a = a + dp; |
minanao | 0:e7b7def631c2 | 25 | b = b + dt; |
minanao | 0:e7b7def631c2 | 26 | n1 = n1 + 1; |
minanao | 0:e7b7def631c2 | 27 | n2 = n2 + 1; |
minanao | 0:e7b7def631c2 | 28 | wait(1); |
minanao | 0:e7b7def631c2 | 29 | } |
minanao | 0:e7b7def631c2 | 30 | } |
minanao | 0:e7b7def631c2 | 31 | |
minanao | 0:e7b7def631c2 | 32 | dp_ave = a / n1; |
minanao | 0:e7b7def631c2 | 33 | dt_ave = b / n2; |
minanao | 0:e7b7def631c2 | 34 | dp0 = calculate_dp0(dp_ave,dt_ave); |
tsubasa_nakajima | 1:bb89b58cfa0e | 35 | |
minanao | 0:e7b7def631c2 | 36 | while(x<10){ |
minanao | 0:e7b7def631c2 | 37 | if(bmp180.ReadData(&dt,&dp)){ |
minanao | 0:e7b7def631c2 | 38 | h = calculate_h(dp0,dp,dt); |
minanao | 0:e7b7def631c2 | 39 | if(h >= 30){ |
minanao | 0:e7b7def631c2 | 40 | x = x + 1; |
minanao | 0:e7b7def631c2 | 41 | } |
minanao | 0:e7b7def631c2 | 42 | wait(1); |
minanao | 0:e7b7def631c2 | 43 | } |
minanao | 0:e7b7def631c2 | 44 | } |
minanao | 0:e7b7def631c2 | 45 | //10秒以上高度30mにいた場合離陸判定 |
minanao | 0:e7b7def631c2 | 46 | |
minanao | 0:e7b7def631c2 | 47 | wait(10); |
minanao | 0:e7b7def631c2 | 48 | |
minanao | 0:e7b7def631c2 | 49 | while(y<10){ |
minanao | 0:e7b7def631c2 | 50 | if(bmp180.ReadData(&dt,&dp)){ |
minanao | 0:e7b7def631c2 | 51 | h = calculate_h(dp0,dp,dt); |
minanao | 0:e7b7def631c2 | 52 | if(h <= 10){ |
minanao | 0:e7b7def631c2 | 53 | y = y + 1; |
minanao | 0:e7b7def631c2 | 54 | } |
minanao | 0:e7b7def631c2 | 55 | wait(1); |
minanao | 0:e7b7def631c2 | 56 | } |
minanao | 0:e7b7def631c2 | 57 | } |
minanao | 0:e7b7def631c2 | 58 | |
minanao | 0:e7b7def631c2 | 59 | wait(5); |
minanao | 0:e7b7def631c2 | 60 | |
minanao | 0:e7b7def631c2 | 61 | landing_judgement = landing_judgement + 1; |
minanao | 0:e7b7def631c2 | 62 | return landing_judgement; |
minanao | 0:e7b7def631c2 | 63 | |
minanao | 0:e7b7def631c2 | 64 | //離陸判定後、10秒以上高度10m以下にいた場合着地判定 |
minanao | 0:e7b7def631c2 | 65 | |
tsubasa_nakajima | 1:bb89b58cfa0e | 66 | } |
tsubasa_nakajima | 1:bb89b58cfa0e | 67 | |
minanao | 0:e7b7def631c2 | 68 | int parachute_separation() |
minanao | 0:e7b7def631c2 | 69 | { |
minanao | 0:e7b7def631c2 | 70 | Nichrome=1; |
minanao | 0:e7b7def631c2 | 71 | wait(10); |
minanao | 0:e7b7def631c2 | 72 | Nichrome=0; |
minanao | 0:e7b7def631c2 | 73 | return 0; |
minanao | 0:e7b7def631c2 | 74 | } |
minanao | 0:e7b7def631c2 | 75 | |
minanao | 0:e7b7def631c2 | 76 | int main(void) |
minanao | 0:e7b7def631c2 | 77 | { |
minanao | 0:e7b7def631c2 | 78 | int land_judgement_1=0,sep_judge=1; |
tsubasa_nakajima | 1:bb89b58cfa0e | 79 | |
minanao | 0:e7b7def631c2 | 80 | //着地判定 |
minanao | 0:e7b7def631c2 | 81 | while(1) |
minanao | 0:e7b7def631c2 | 82 | { |
tsubasa_nakajima | 1:bb89b58cfa0e | 83 | land_judgement_1 = landing_judgement(); |
minanao | 0:e7b7def631c2 | 84 | if(land_judgement_1==1) |
minanao | 0:e7b7def631c2 | 85 | { |
minanao | 0:e7b7def631c2 | 86 | break; |
minanao | 0:e7b7def631c2 | 87 | } |
minanao | 0:e7b7def631c2 | 88 | } |
tsubasa_nakajima | 1:bb89b58cfa0e | 89 | |
minanao | 0:e7b7def631c2 | 90 | wait(30); |
minanao | 0:e7b7def631c2 | 91 | |
tsubasa_nakajima | 1:bb89b58cfa0e | 92 | //中間地点を経由してゴール地点まで自律移動 |
tsubasa_nakajima | 1:bb89b58cfa0e | 93 | direction.walk(); |
minanao | 0:e7b7def631c2 | 94 | |
tsubasa_nakajima | 1:bb89b58cfa0e | 95 | return 0; |
minanao | 0:e7b7def631c2 | 96 | |
minanao | 0:e7b7def631c2 | 97 | } |
minanao | 0:e7b7def631c2 | 98 | |
minanao | 0:e7b7def631c2 | 99 | |
minanao | 0:e7b7def631c2 | 100 |