能代で使用するcansat用プログラム

Dependencies:   mbed

Committer:
ishiyamayuto
Date:
Sun Jun 23 09:50:55 2019 +0000
Revision:
1:b22208f0b32e
Parent:
0:baa2434ead1d
Child:
2:92e515e23717
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ishiyamayuto 0:baa2434ead1d 1 //このプログラムは2019年大島打上の本番プログラムを参考にしている
ishiyamayuto 0:baa2434ead1d 2 #include "mbed.h"
ishiyamayuto 0:baa2434ead1d 3 #include "MPU6050.h"
ishiyamayuto 0:baa2434ead1d 4 #include "BMP180.h"
ishiyamayuto 0:baa2434ead1d 5
ishiyamayuto 0:baa2434ead1d 6 #define CNT_LAUNCH //発射判定するときの何かしらのしきい値
ishiyamayuto 0:baa2434ead1d 7
ishiyamayuto 0:baa2434ead1d 8
ishiyamayuto 0:baa2434ead1d 9 #define TIME_SWIM //強制的にSwimフェーズに移行させる時間
ishiyamayuto 0:baa2434ead1d 10 #define TIME_SEND //無線送信する間隔
ishiyamayuto 0:baa2434ead1d 11 #define NUM_CNT_MEDIAN //中央値をとる個数
ishiyamayuto 0:baa2434ead1d 12 #define RATE_GPS //GPSのTickerを動作させるタイミング
ishiyamayuto 0:baa2434ead1d 13 #define p0 //海面気圧
ishiyamayuto 0:baa2434ead1d 14
ishiyamayuto 0:baa2434ead1d 15 MPU6050 mpu(,); //mpu()の使用宣言
ishiyamayuto 0:baa2434ead1d 16 BMP180 bmp(,); //bmp()の使用宣言
ishiyamayuto 0:baa2434ead1d 17 Serial pc(,); //パソコンの使用宣言
ishiyamayuto 0:baa2434ead1d 18 Serial gps(,); //GPSの使用宣言
ishiyamayuto 0:baa2434ead1d 19 DigitalOut myled(); //???
ishiyamayuto 0:baa2434ead1d 20 DigitalOut ES920_RST(PA_5); //???
ishiyamayuto 0:baa2434ead1d 21 PwmOut servo1(PB_4); //サーボの使用宣言
ishiyamayuto 0:baa2434ead1d 22 PwmOut servo2(PB_5); //サーボの使用宣言
ishiyamayuto 0:baa2434ead1d 23 DigitalOut servo1_signal(PA_0); //サーボの使用宣言
ishiyamayuto 0:baa2434ead1d 24 DigitalOut servo2_signal(PA_1); //サーボの使用宣言
ishiyamayuto 0:baa2434ead1d 25 Timer timer_open; //???
ishiyamayuto 0:baa2434ead1d 26 Timer timer_data; //???
ishiyamayuto 0:baa2434ead1d 27 Ticker tic_gps; //???
ishiyamayuto 0:baa2434ead1d 28
ishiyamayuto 0:baa2434ead1d 29 /*自作関数*/
ishiyamayuto 0:baa2434ead1d 30 void f_land(); //着水判定をする関数
ishiyamayuto 0:baa2434ead1d 31 void f_swim(); //サーボを用いて泳ぐ関数
ishiyamayuto 0:baa2434ead1d 32 float f_get_gps_length(); //GPSから北方向の位置を返す関数...(1)
ishiyamayuto 0:baa2434ead1d 33 float f_get_gps_width(); //GPSから東方向の位置を返す関数...(2)
ishiyamayuto 0:baa2434ead1d 34 float f_get_high(); //から高度を返す関数...(3)
ishiyamayuto 0:baa2434ead1d 35 void f_get_gps_full(); //(1)(2)を用いて自身の位置を把握する関数...(4)
ishiyamayuto 0:baa2434ead1d 36
ishiyamayuto 0:baa2434ead1d 37 void f_get_full(); //全てのデータを取得し整理する関数。基本的に各フェーズではこの関数に頼る
ishiyamayuto 0:baa2434ead1d 38
ishiyamayuto 0:baa2434ead1d 39
ishiyamayuto 0:baa2434ead1d 40
ishiyamayuto 0:baa2434ead1d 41
ishiyamayuto 0:baa2434ead1d 42 enum Phaze{ //フェーズ定義
ishiyamayuto 0:baa2434ead1d 43 STANDBY,
ishiyamayuto 0:baa2434ead1d 44 LEAVE_LAND,
ishiyamayuto 0:baa2434ead1d 45 SWIM,
ishiyamayuto 0:baa2434ead1d 46 FIN
ishiyamayuto 0:baa2434ead1d 47 }phaze;
ishiyamayuto 0:baa2434ead1d 48
ishiyamayuto 0:baa2434ead1d 49 void main() //本体はここから
ishiyamayuto 0:baa2434ead1d 50 {
ishiyamayuto 0:baa2434ead1d 51
ishiyamayuto 0:baa2434ead1d 52 while (phaze != FIN){
ishiyamayuto 0:baa2434ead1d 53 switch(phaze){
ishiyamayuto 0:baa2434ead1d 54 case STANDBY: //発射検知するまでがSTANDBYフェーズ
ishiyamayuto 0:baa2434ead1d 55 f_get_full();
ishiyamayuto 0:baa2434ead1d 56 if(){ //なんらかの値がしきい値を超えたらフェーズ変更
ishiyamayuto 0:baa2434ead1d 57 phaze = LEAVE_LAND;
ishiyamayuto 0:baa2434ead1d 58 }
ishiyamayuto 0:baa2434ead1d 59 break;
ishiyamayuto 0:baa2434ead1d 60 case LEAVE_LAND: //着水検知するまでがLEAVE_LANDフェーズ
ishiyamayuto 0:baa2434ead1d 61 f_get_full();
ishiyamayuto 0:baa2434ead1d 62 f_land();
ishiyamayuto 0:baa2434ead1d 63 if(){ //なんらかの値がしきい値を超えたらフェーズ変更
ishiyamayuto 0:baa2434ead1d 64 phaze = SWIM;
ishiyamayuto 0:baa2434ead1d 65 }
ishiyamayuto 0:baa2434ead1d 66 break;
ishiyamayuto 0:baa2434ead1d 67 case SWIM: //ゴールするまでがSWIMフェーズ
ishiyamayuto 0:baa2434ead1d 68 f_get_full();
ishiyamayuto 0:baa2434ead1d 69 if(){ //なんらかの値がしきい値を超えたらフェーズ変更
ishiyamayuto 0:baa2434ead1d 70 phaze = FIN;
ishiyamayuto 0:baa2434ead1d 71 }
ishiyamayuto 0:baa2434ead1d 72
ishiyamayuto 0:baa2434ead1d 73 break;
ishiyamayuto 0:baa2434ead1d 74 }
ishiyamayuto 0:baa2434ead1d 75 }
ishiyamayuto 0:baa2434ead1d 76
ishiyamayuto 0:baa2434ead1d 77 }