修正済みby皆川

Dependencies:   mbed Servo cansat_integrated_2 BMP180

Dependents:   cansat_integrated_2

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?

UserRevisionLine numberNew 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 }