アーボック

Dependencies:   mbed BMP180

main.cpp

Committer:
naruu
Date:
2020-12-19
Revision:
5:a269a8dfc6ca
Parent:
4:0660f26617c8

File content as of revision 5:a269a8dfc6ca:

#include "mbed.h"
#include "BMP180.h"
#include <stdio.h>
#include <math.h>

#define PIN_SDA D4
#define PIN_SCL D5

Serial pc(SERIAL_TX,SERIAL_RX,921600);//通信
BMP180 bmp180(PIN_SDA,PIN_SCL);//気圧センサーのピン
Serial xbee(D1,D0);//Xbeeのピン
DigitalOut FET1(D9);//FETのピン
DigitalOut FET2(D8);
                 


  int main(){
    float avalt,x8;
    float pressure,temperature,altitude;//気圧,気温,高度
    int n;
    int t=0;
    xbee.printf("\rstart!\n\r");//気圧センサースタート
    bmp180.Initialize(27,BMP180_OSS_ULTRA_HIGH_RESOLUTION);//27は府大の海抜高度
    xbee.printf("initialization complete!\n\r");//初期化完了

    while(1){
          float x4,x5,x6,x7,a,b;
          float sum=0,altitude[11];
          int r=0;
        for(int p=1;p<11;p++){
        if(bmp180.ReadData(&temperature,&pressure)){
            a = pressure;
            b = temperature;
            x4 = 1019.11 / a; //海面気圧を気圧でわる
            x5 = powf(x4, 0.1902225); //5.257ぶんの1
            x6 = 273.15 + b; //絶対温度
            x7 = (x5 - 1) * x6;
            x8 = x7 / 0.0065;
            altitude[p] = x8;
            sum=sum+altitude[p];
            r++;
        }else{
        xbee.printf("NO DATA\n\r");
        xbee.printf("---------------------------\n\r");
        wait(1);
            }
            
            avalt=sum/(float)r;
            xbee.printf("Altitude(m)\t:%.3f\n\r",avalt);
            xbee.printf("--------------------------------\n\r");
            break;
            n=0;
    }wait(3);
        }
        while(1){
                float y4,y5,y6,y7,y8,c,d;
                float speed;
                float s=0;
                float alti[11];
                float average_alti;
                int e=0;
        for(int q=1;q<11;q++){
                if(bmp180.ReadData(&temperature,&pressure)){
                c = pressure;
                d = temperature;
                y4 = 1019.11 / c; //海面気圧を気圧でわる
                y5 = powf(y4,0.1902225);
                y6 = 273.15 + d;
                y7 = (y5 - 1) * y6;
                y8 = y7 / 0.0065;
                alti[q]= y8;
                s=s+alti[q];
                average_alti=s/(float)e;
                xbee.printf("高度%d回目%f\n\r",q,alti[q]);
                xbee.printf("-------------------------------\n\r");
                speed = (avalt - average_alti)/(float)(3+n);//値が取得でた場合は,3秒間の速さをだし,値が取得できなかった場合は3+n秒(nは値が取得できなかった回数)の速さをだす
                xbee.printf("Altitude(m)\t:%.3f\n\r",average_alti);
                xbee.printf("Speed(m/s)\t:%.3f\n\r",speed);
                xbee.printf("-------------------------------\n\r");
                avalt=average_alti;
                printf("tの値は%d",t);
                if(speed<=0.5){
                    t=t+1;
                    }
                    if(t=3){
                        break;
                        }
                n=0;
            
                }wait(3);
             } 

   return 0;
   }
   }