ルンパッパ

Dependencies:   mbed BMP180

Revision:
2:20304b3cea67
Parent:
1:1dab888e1f3c
Child:
3:3a62c5ccfddb
--- a/main.cpp	Wed Dec 16 07:18:54 2020 +0000
+++ b/main.cpp	Thu Dec 17 13:32:46 2020 +0000
@@ -1,18 +1,20 @@
 #include "mbed.h"
 #include "TB6612.h"
 #include "getGPS.h"
-#include"math.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);//通信
 Serial xbee(D1,D0);//Xbeeのピン
 DigitalOut FET(D9);//FETのピン
 DigitalIn flight(D6);  //フライトピンのピン    
 DigitalOut SW(D7);//フライトピンの電圧降下ピン 
 TB6612 motor(D7,D9,D11);//モータードライバーのピン
+GPS gps (D1,D0);                 
 
 
   int main(){
@@ -35,13 +37,14 @@
 
         SW = 0;
         xbee.printf("やったぞおおおおおおおおお!\n");
-        pc.printf("やったぞおおおおおおおおお!\n");//フライトピンが外れたときに表示  
+  
     break;
             } 
         }
    }
     BMP180 bmp180(PIN_SDA,PIN_SCL);
     float pressure,temperature,altitude;//気圧,気温,高度
+    int n;
     xbee.printf("\rstart!\n\r");//気圧センサースタート
     bmp180.Initialize(27,BMP180_OSS_ULTRA_HIGH_RESOLUTION);//27は府大の海抜高度
     xbee.printf("initialization complete!\n\r");//初期化完了
@@ -61,8 +64,9 @@
             
             xbee.printf("Altitude(m)\t:%.3f\n\r",altitude);
             xbee.printf("--------------------------------\n\r");
-            wait(1);
+            wait(3);
             break;
+            n=0;
     }else{
         xbee.printf("NO DATA\n\r");
         xbee.printf("---------------------------\n\r");
@@ -82,50 +86,51 @@
                 y7 = (y5 - 1) * y6;
                 y8 = y7 / 0.0065;
                 altitude = y8;
-                speed = (x8 - y8)/1;
+                speed = (x8 - y8)/(float)(3+n);//値が取得でた場合は,3秒間の速さをだし,値が取得できなかった場合は3+n秒(nは値が取得できなかった回数)の速さをだす
                 
                 xbee.printf("Altitude(m)\t:%.3f\n\r",altitude);
                 xbee.printf("Speed(m/s)\t:%.3f\n\r",speed);
                 xbee.printf("--------------------------------\n\r");
                 x8 = y8;
-                wait(1);
+                n=0;
+                wait(3);
                 if(speed<=0){
                     break;
-                    }}
-                else{
+                    }
+            }else{
                     xbee.printf("NO DATA\n\r");
+                    ++n;
                     wait(1);
                     }
            }
-           /*speedが0以下になったらFETに20秒電流を流してその後電流を止まる*/         
+           /*speedが0以下になったらFETに20秒電流を流してその後電流を止める*/         
     FET=1;
 wait(20);
 FET=0;
-
-}
-  //motor=100; 
-  
-   double a;
+motor = 100; 
+double a;
     double b;
     double distance;
     
-     xbee.printf("GPS begin\n");;
-    pc.printf("GPS begin\n");
+     xbee.printf("GPS begin\n");
     
     while(1){
         if(gps.getgps()){
             /*a,bを緯度経度の初期値で初期化*/
             a=gps.latitude;
             b=gps.longitude;
-            pc.printf("(%lf,%lf)\r\n",gps.latitude,gps.longitude);//緯度と経度を表示
+            xbee.printf("(%lf,%lf)\r\n",gps.latitude,gps.longitude);//緯度と経度を表示
+            xbee.printf("--------------------------------\n\r");
                       break;
         }else{
-            pc.printf("Fault_No_Data\r\n");
+            xbee.printf("Fault_No_Data\r\n");
          wait(1);
         }
-         } while(1){
+        }  
+         while(1){
          if(gps.getgps()){
-             pc.printf("(%lf,%lf)\n\r",gps.latitude,gps.longitude);//緯度と経度を表示
+             xbee.printf("(%lf,%lf)\n\r",gps.latitude,gps.longitude);//緯度と経度を表示
+            xbee.printf("--------------------------------\n\r");
              
     /*ここから距離の計算*/
                  /*c、dを得た緯度経度の値で初期化*/  
@@ -149,11 +154,11 @@
                       
                       distance=earth_radius*theta_r;//距離の計算
                       
-             /*距離が20m以上なら表示、通信*/         
-                 if(distance>=25){
-                  pc.printf("run over20m");
+             /*距離が25m以上なら表示、通信*/         
+                 if(distance>=30){
+                  pc.printf("run over 20m");
                   motor=0;
-                  xbee.printf("run over20m");
+                  xbee.printf("run over 20m");
                   break;
                   }
 
@@ -164,6 +169,6 @@
             }//データ取得失敗を表示、通信、1秒待機
                
                }
-    
+    xbee.printf("成功\n");
    return 0;
    }
\ No newline at end of file