修正済みby皆川
Dependencies: mbed Servo cansat_integrated_2 BMP180
Dependents: cansat_integrated_2
main.cpp@10:a3ee8168a7d8, 2021-11-04 (annotated)
- Committer:
- tsubasa_nakajima
- Date:
- Thu Nov 04 14:59:28 2021 +0000
- Revision:
- 10:a3ee8168a7d8
- Parent:
- 8:7209c810309d
- Child:
- 11:8d21db3e64f5
fixed bug
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
minanao | 0:e7b7def631c2 | 1 | #include "mbed.h" |
tsubasa_nakajima | 6:6fe6e3554a46 | 2 | #include "direction.h" |
tsubasa_nakajima | 8:7209c810309d | 3 | #include "BMP180.h" |
tsubasa_nakajima | 8:7209c810309d | 4 | #include "calculate.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 | 8:7209c810309d | 38 | if(h >= 10){ |
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 | 6:6fe6e3554a46 | 44 | |
tsubasa_nakajima | 8:7209c810309d | 45 | wait(10); |
tsubasa_nakajima | 8:7209c810309d | 46 | |
tsubasa_nakajima | 8:7209c810309d | 47 | //離陸判定後、10秒以上高度2m以下にいた場合着地判定 |
tsubasa_nakajima | 8:7209c810309d | 48 | while(y<10){ |
tsubasa_nakajima | 8:7209c810309d | 49 | if(bmp180.ReadData(&dt,&dp)){ |
tsubasa_nakajima | 8:7209c810309d | 50 | h = calculate_h(dp0,dp,dt); |
tsubasa_nakajima | 8:7209c810309d | 51 | if(h <= 2){ |
tsubasa_nakajima | 8:7209c810309d | 52 | y = y + 1; |
tsubasa_nakajima | 8:7209c810309d | 53 | } |
tsubasa_nakajima | 8:7209c810309d | 54 | wait(1); |
tsubasa_nakajima | 8:7209c810309d | 55 | } |
tsubasa_nakajima | 8:7209c810309d | 56 | } |
tsubasa_nakajima | 10:a3ee8168a7d8 | 57 | //30秒待機 |
tsubasa_nakajima | 5:e1001bfc423a | 58 | wait(30); |
tsubasa_nakajima | 1:bb89b58cfa0e | 59 | |
tsubasa_nakajima | 5:e1001bfc423a | 60 | //パラシュート分離 |
tsubasa_nakajima | 5:e1001bfc423a | 61 | Nichrome=1; |
tsubasa_nakajima | 5:e1001bfc423a | 62 | wait(10); |
tsubasa_nakajima | 5:e1001bfc423a | 63 | Nichrome=0; |
tsubasa_nakajima | 8:7209c810309d | 64 | |
tsubasa_nakajima | 8:7209c810309d | 65 | //中間地点を経由してゴール地点まで移動 |
tsubasa_nakajima | 8:7209c810309d | 66 | direction hokou; |
tsubasa_nakajima | 8:7209c810309d | 67 | hokou.walk(); |
tsubasa_nakajima | 6:6fe6e3554a46 | 68 | |
tsubasa_nakajima | 5:e1001bfc423a | 69 | return 0; |
tsubasa_nakajima | 8:7209c810309d | 70 | |
tsubasa_nakajima | 8:7209c810309d | 71 | } |