修正済みby皆川
Dependencies: mbed Servo cansat_integrated_2 BMP180
Dependents: cansat_integrated_2
main.cpp@13:c482c4d7a585, 2021-12-19 (annotated)
- Committer:
- tsubasa_nakajima
- Date:
- Sun Dec 19 02:42:53 2021 +0000
- Revision:
- 13:c482c4d7a585
- Parent:
- 11:8d21db3e64f5
a
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
minanao | 0:e7b7def631c2 | 1 | #include "mbed.h" |
tsubasa_nakajima | 8:7209c810309d | 2 | #include "BMP180.h" |
tsubasa_nakajima | 8:7209c810309d | 3 | #include "calculate.h" |
tsubasa_nakajima | 13:c482c4d7a585 | 4 | #include "Movement.h" |
tsubasa_nakajima | 8:7209c810309d | 5 | #define PIN_SDA D4 |
tsubasa_nakajima | 8:7209c810309d | 6 | #define PIN_SCL D5 |
tsubasa_nakajima | 8:7209c810309d | 7 | |
tsubasa_nakajima | 5:e1001bfc423a | 8 | DigitalOut Nichrome(A6); |
tsubasa_nakajima | 8:7209c810309d | 9 | |
tsubasa_nakajima | 5:e1001bfc423a | 10 | int main(){ |
tsubasa_nakajima | 8:7209c810309d | 11 | BMP180 bmp180(PIN_SDA,PIN_SCL); |
tsubasa_nakajima | 8:7209c810309d | 12 | int x = 0,y = 0,n1 = 0, n2 = 0; |
tsubasa_nakajima | 8:7209c810309d | 13 | int i; |
tsubasa_nakajima | 8:7209c810309d | 14 | float h,dp,dt,dp0; |
tsubasa_nakajima | 8:7209c810309d | 15 | float a = 0,b = 0,dp_ave,dt_ave; |
tsubasa_nakajima | 8:7209c810309d | 16 | //hは高度、dpは気圧、dtは温度、dp0は海面気圧 |
tsubasa_nakajima | 8:7209c810309d | 17 | bmp180.Initialize(27,BMP180_OSS_ULTRA_LOW_POWER);//27は府大の海抜高度 |
tsubasa_nakajima | 8:7209c810309d | 18 | |
tsubasa_nakajima | 8:7209c810309d | 19 | //海面気圧を計算 |
tsubasa_nakajima | 8:7209c810309d | 20 | for(i=0;i<15;i++){ |
tsubasa_nakajima | 8:7209c810309d | 21 | if(bmp180.ReadData(&dt,&dp)){ |
tsubasa_nakajima | 8:7209c810309d | 22 | a = a + dp; |
tsubasa_nakajima | 8:7209c810309d | 23 | b = b + dt; |
tsubasa_nakajima | 8:7209c810309d | 24 | n1 = n1 + 1; |
tsubasa_nakajima | 8:7209c810309d | 25 | n2 = n2 + 1; |
tsubasa_nakajima | 8:7209c810309d | 26 | wait(1); |
tsubasa_nakajima | 8:7209c810309d | 27 | } |
tsubasa_nakajima | 8:7209c810309d | 28 | } |
tsubasa_nakajima | 8:7209c810309d | 29 | |
tsubasa_nakajima | 8:7209c810309d | 30 | dp_ave = a / n1; |
tsubasa_nakajima | 8:7209c810309d | 31 | dt_ave = b / n2; |
tsubasa_nakajima | 8:7209c810309d | 32 | dp0 = calculate_dp0(dp_ave,dt_ave); |
tsubasa_nakajima | 8:7209c810309d | 33 | |
tsubasa_nakajima | 8:7209c810309d | 34 | //10秒以上高度10mにいた場合離陸判定 |
tsubasa_nakajima | 8:7209c810309d | 35 | while(x<10){ |
tsubasa_nakajima | 8:7209c810309d | 36 | if(bmp180.ReadData(&dt,&dp)){ |
tsubasa_nakajima | 8:7209c810309d | 37 | h = calculate_h(dp0,dp,dt); |
tsubasa_nakajima | 13:c482c4d7a585 | 38 | if(h >= 15){ |
tsubasa_nakajima | 8:7209c810309d | 39 | x = x + 1; |
tsubasa_nakajima | 8:7209c810309d | 40 | } |
tsubasa_nakajima | 8:7209c810309d | 41 | wait(1); |
tsubasa_nakajima | 8:7209c810309d | 42 | } |
tsubasa_nakajima | 5:e1001bfc423a | 43 | } |
tsubasa_nakajima | 13:c482c4d7a585 | 44 | wait(10); |
tsubasa_nakajima | 13:c482c4d7a585 | 45 | |
tsubasa_nakajima | 13:c482c4d7a585 | 46 | //離陸判定後、10秒以上高度2m以下にいた場合着地判定 |
tsubasa_nakajima | 13:c482c4d7a585 | 47 | while(y<10){ |
tsubasa_nakajima | 13:c482c4d7a585 | 48 | if(bmp180.ReadData(&dt,&dp)){ |
tsubasa_nakajima | 13:c482c4d7a585 | 49 | h = calculate_h(dp0,dp,dt); |
tsubasa_nakajima | 13:c482c4d7a585 | 50 | if(h <= 6){ |
tsubasa_nakajima | 13:c482c4d7a585 | 51 | y = y + 1; |
tsubasa_nakajima | 13:c482c4d7a585 | 52 | } |
tsubasa_nakajima | 13:c482c4d7a585 | 53 | wait(1); |
tsubasa_nakajima | 13:c482c4d7a585 | 54 | } |
tsubasa_nakajima | 13:c482c4d7a585 | 55 | } |
tsubasa_nakajima | 6:6fe6e3554a46 | 56 | |
tsubasa_nakajima | 10:a3ee8168a7d8 | 57 | //30秒待機 |
tsubasa_nakajima | 5:e1001bfc423a | 58 | wait(30); |
tsubasa_nakajima | 11:8d21db3e64f5 | 59 | |
tsubasa_nakajima | 5:e1001bfc423a | 60 | //パラシュート分離 |
tsubasa_nakajima | 5:e1001bfc423a | 61 | Nichrome=1; |
tsubasa_nakajima | 5:e1001bfc423a | 62 | wait(10); |
tsubasa_nakajima | 11:8d21db3e64f5 | 63 | Nichrome=0; |
tsubasa_nakajima | 8:7209c810309d | 64 | |
tsubasa_nakajima | 13:c482c4d7a585 | 65 | //前進して段差を上る、15m前進 |
tsubasa_nakajima | 13:c482c4d7a585 | 66 | Movement idou; |
tsubasa_nakajima | 13:c482c4d7a585 | 67 | idou.move_backward(); |
tsubasa_nakajima | 13:c482c4d7a585 | 68 | wait(180); |
tsubasa_nakajima | 13:c482c4d7a585 | 69 | |
tsubasa_nakajima | 13:c482c4d7a585 | 70 | //右に45°方向転換して前進 |
tsubasa_nakajima | 13:c482c4d7a585 | 71 | idou.turn_right(45); |
tsubasa_nakajima | 13:c482c4d7a585 | 72 | idou.move_backward(); |
tsubasa_nakajima | 13:c482c4d7a585 | 73 | wait(5); |
tsubasa_nakajima | 13:c482c4d7a585 | 74 | |
tsubasa_nakajima | 13:c482c4d7a585 | 75 | //左に45°方向転換して前進 |
tsubasa_nakajima | 13:c482c4d7a585 | 76 | idou.turn_left(45); |
tsubasa_nakajima | 13:c482c4d7a585 | 77 | idou.move_backward(); |
tsubasa_nakajima | 13:c482c4d7a585 | 78 | wait(5); |
tsubasa_nakajima | 13:c482c4d7a585 | 79 | |
tsubasa_nakajima | 13:c482c4d7a585 | 80 | //右に90°方向転換して前進 |
tsubasa_nakajima | 13:c482c4d7a585 | 81 | idou.turn_right(90); |
tsubasa_nakajima | 13:c482c4d7a585 | 82 | idou.move_backward(); |
tsubasa_nakajima | 13:c482c4d7a585 | 83 | wait(5); |
tsubasa_nakajima | 13:c482c4d7a585 | 84 | |
tsubasa_nakajima | 13:c482c4d7a585 | 85 | //左に90°方向転換して前進 |
tsubasa_nakajima | 13:c482c4d7a585 | 86 | idou.turn_left(90); |
tsubasa_nakajima | 13:c482c4d7a585 | 87 | idou.move_backward(); |
tsubasa_nakajima | 13:c482c4d7a585 | 88 | wait(5); |
tsubasa_nakajima | 6:6fe6e3554a46 | 89 | |
tsubasa_nakajima | 5:e1001bfc423a | 90 | return 0; |
tsubasa_nakajima | 8:7209c810309d | 91 | |
tsubasa_nakajima | 11:8d21db3e64f5 | 92 | } |