アーボック

Dependencies:   mbed BMP180

Committer:
naruu
Date:
Sat Dec 19 12:04:42 2020 +0000
Revision:
5:a269a8dfc6ca
Parent:
4:0660f26617c8
guyghpiuhi;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
naruu 0:b5179eefff97 1 #include "mbed.h"
naruu 0:b5179eefff97 2 #include "BMP180.h"
naruu 0:b5179eefff97 3 #include <stdio.h>
naruu 0:b5179eefff97 4 #include <math.h>
naruu 0:b5179eefff97 5
naruu 0:b5179eefff97 6 #define PIN_SDA D4
naruu 0:b5179eefff97 7 #define PIN_SCL D5
naruu 0:b5179eefff97 8
naruu 0:b5179eefff97 9 Serial pc(SERIAL_TX,SERIAL_RX,921600);//通信
naruu 0:b5179eefff97 10 BMP180 bmp180(PIN_SDA,PIN_SCL);//気圧センサーのピン
naruu 0:b5179eefff97 11 Serial xbee(D1,D0);//Xbeeのピン
naruu 0:b5179eefff97 12 DigitalOut FET1(D9);//FETのピン
naruu 0:b5179eefff97 13 DigitalOut FET2(D8);
naruu 0:b5179eefff97 14
naruu 0:b5179eefff97 15
naruu 0:b5179eefff97 16
naruu 0:b5179eefff97 17 int main(){
naruu 0:b5179eefff97 18 float avalt,x8;
naruu 0:b5179eefff97 19 float pressure,temperature,altitude;//気圧,気温,高度
naruu 0:b5179eefff97 20 int n;
naruu 0:b5179eefff97 21 int t=0;
naruu 0:b5179eefff97 22 xbee.printf("\rstart!\n\r");//気圧センサースタート
naruu 0:b5179eefff97 23 bmp180.Initialize(27,BMP180_OSS_ULTRA_HIGH_RESOLUTION);//27は府大の海抜高度
naruu 0:b5179eefff97 24 xbee.printf("initialization complete!\n\r");//初期化完了
naruu 0:b5179eefff97 25
naruu 0:b5179eefff97 26 while(1){
naruu 0:b5179eefff97 27 float x4,x5,x6,x7,a,b;
naruu 0:b5179eefff97 28 float sum=0,altitude[11];
naruu 2:c2f8ff2de89e 29 int r=0;
naruu 2:c2f8ff2de89e 30 for(int p=1;p<11;p++){
naruu 2:c2f8ff2de89e 31 if(bmp180.ReadData(&temperature,&pressure)){
naruu 2:c2f8ff2de89e 32 a = pressure;
naruu 0:b5179eefff97 33 b = temperature;
naruu 0:b5179eefff97 34 x4 = 1019.11 / a; //海面気圧を気圧でわる
naruu 0:b5179eefff97 35 x5 = powf(x4, 0.1902225); //5.257ぶんの1
naruu 0:b5179eefff97 36 x6 = 273.15 + b; //絶対温度
naruu 0:b5179eefff97 37 x7 = (x5 - 1) * x6;
naruu 0:b5179eefff97 38 x8 = x7 / 0.0065;
naruu 0:b5179eefff97 39 altitude[p] = x8;
naruu 0:b5179eefff97 40 sum=sum+altitude[p];
naruu 2:c2f8ff2de89e 41 r++;
naruu 2:c2f8ff2de89e 42 }else{
naruu 2:c2f8ff2de89e 43 xbee.printf("NO DATA\n\r");
naruu 2:c2f8ff2de89e 44 xbee.printf("---------------------------\n\r");
naruu 2:c2f8ff2de89e 45 wait(1);
naruu 0:b5179eefff97 46 }
naruu 0:b5179eefff97 47
naruu 2:c2f8ff2de89e 48 avalt=sum/(float)r;
naruu 0:b5179eefff97 49 xbee.printf("Altitude(m)\t:%.3f\n\r",avalt);
naruu 0:b5179eefff97 50 xbee.printf("--------------------------------\n\r");
naruu 0:b5179eefff97 51 break;
naruu 0:b5179eefff97 52 n=0;
naruu 5:a269a8dfc6ca 53 }wait(3);
naruu 5:a269a8dfc6ca 54 }
naruu 0:b5179eefff97 55 while(1){
naruu 0:b5179eefff97 56 float y4,y5,y6,y7,y8,c,d;
naruu 0:b5179eefff97 57 float speed;
naruu 0:b5179eefff97 58 float s=0;
naruu 0:b5179eefff97 59 float alti[11];
naruu 0:b5179eefff97 60 float average_alti;
naruu 2:c2f8ff2de89e 61 int e=0;
naruu 2:c2f8ff2de89e 62 for(int q=1;q<11;q++){
naruu 2:c2f8ff2de89e 63 if(bmp180.ReadData(&temperature,&pressure)){
naruu 0:b5179eefff97 64 c = pressure;
naruu 0:b5179eefff97 65 d = temperature;
naruu 0:b5179eefff97 66 y4 = 1019.11 / c; //海面気圧を気圧でわる
naruu 0:b5179eefff97 67 y5 = powf(y4,0.1902225);
naruu 0:b5179eefff97 68 y6 = 273.15 + d;
naruu 0:b5179eefff97 69 y7 = (y5 - 1) * y6;
naruu 0:b5179eefff97 70 y8 = y7 / 0.0065;
naruu 0:b5179eefff97 71 alti[q]= y8;
naruu 0:b5179eefff97 72 s=s+alti[q];
naruu 2:c2f8ff2de89e 73 average_alti=s/(float)e;
naruu 1:81b746caadc5 74 xbee.printf("高度%d回目%f\n\r",q,alti[q]);
naruu 1:81b746caadc5 75 xbee.printf("-------------------------------\n\r");
naruu 0:b5179eefff97 76 speed = (avalt - average_alti)/(float)(3+n);//値が取得でた場合は,3秒間の速さをだし,値が取得できなかった場合は3+n秒(nは値が取得できなかった回数)の速さをだす
naruu 0:b5179eefff97 77 xbee.printf("Altitude(m)\t:%.3f\n\r",average_alti);
naruu 0:b5179eefff97 78 xbee.printf("Speed(m/s)\t:%.3f\n\r",speed);
naruu 0:b5179eefff97 79 xbee.printf("-------------------------------\n\r");
naruu 2:c2f8ff2de89e 80 avalt=average_alti;
naruu 2:c2f8ff2de89e 81 printf("tの値は%d",t);
naruu 0:b5179eefff97 82 if(speed<=0.5){
naruu 0:b5179eefff97 83 t=t+1;
naruu 0:b5179eefff97 84 }
naruu 0:b5179eefff97 85 if(t=3){
naruu 0:b5179eefff97 86 break;
naruu 0:b5179eefff97 87 }
naruu 2:c2f8ff2de89e 88 n=0;
naruu 3:2b7006ab9646 89
naruu 3:2b7006ab9646 90 }wait(3);
naruu 3:2b7006ab9646 91 }
naruu 0:b5179eefff97 92
naruu 0:b5179eefff97 93 return 0;
naruu 2:c2f8ff2de89e 94 }
naruu 0:b5179eefff97 95 }