修正済みby皆川

Dependencies:   mbed Servo cansat_integrated_2 BMP180

Dependents:   cansat_integrated_2

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?

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