修正済みby皆川

Dependencies:   mbed Servo cansat_integrated_2 BMP180

Dependents:   cansat_integrated_2

Committer:
tsubasa_nakajima
Date:
Fri Nov 05 15:39:41 2021 +0000
Revision:
11:8d21db3e64f5
Parent:
10:a3ee8168a7d8
Child:
13:c482c4d7a585
fixed movement.cpp bug

Who changed what in which revision?

UserRevisionLine numberNew 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 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 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 11:8d21db3e64f5 71 }