能代で使用するcansat用プログラム
Dependencies: mbed
main.cpp
- Committer:
- ishiyamayuto
- Date:
- 2019-06-30
- Revision:
- 2:92e515e23717
- Parent:
- 1:b22208f0b32e
File content as of revision 2:92e515e23717:
//このプログラムは2019年大島打上の本番プログラムを参考にしている #include "mbed.h" #include "MPU6050.h" #include "BMP180.h" #define CNT_LAUNCH //発射判定するときの何かしらのしきい値 #define TIME_SWIM //強制的にSwimフェーズに移行させる時間 #define TIME_SEND //無線送信する間隔 #define NUM_CNT_MEDIAN //中央値をとる個数 #define RATE_GPS //GPSのTickerを動作させるタイミング MPU6050 mpu(,); //mpu()の使用宣言 BMP180 bmp(,); //bmp()の使用宣言 Serial pc(,); //パソコンの使用宣言 Serial gps(,); //GPSの使用宣言 DigitalOut myled(); //??? DigitalOut ES920_RST(PA_5); //??? PwmOut servo1(PB_4); //サーボの使用宣言 PwmOut servo2(PB_5); //サーボの使用宣言 DigitalOut servo1_signal(PA_0); //サーボの使用宣言 DigitalOut servo2_signal(PA_1); //サーボの使用宣言 Timer timer_open; //??? Timer timer_data; //??? Ticker tic_gps; //??? /*自作関数*/ void f_land(); //着水判定をする関数 void f_swim(); //サーボを用いて泳ぐ関数 float f_get_gps_length(); //GPSから北方向の位置を返す関数...(1) float f_get_gps_width(); //GPSから東方向の位置を返す関数...(2) float f_get_high(); //から高度を返す関数...(3) void f_get_gps_full(); //(1)(2)を用いて自身の位置を把握する関数...(4) void f_get_full(); //全てのデータを取得し整理する関数。基本的に各フェーズではこの関数に頼る enum Phaze{ //フェーズ定義 STANDBY, LEAVE_LAND, SWIM, FIN }phaze; void main() //本体はここから { while (phaze != FIN){ switch(phaze){ case STANDBY: //発射検知するまでがSTANDBYフェーズ f_get_full(); if(){ //なんらかの値がしきい値を超えたらフェーズ変更 phaze = LEAVE_LAND; } break; case LEAVE_LAND: //着水検知するまでがLEAVE_LANDフェーズ f_get_full(); f_land(); if(){ //なんらかの値がしきい値を超えたらフェーズ変更 phaze = SWIM; } break; case SWIM: //ゴールするまでがSWIMフェーズ f_get_full(); if(){ //なんらかの値がしきい値を超えたらフェーズ変更 phaze = FIN; } break; } } }