Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp@2:92e515e23717, 2019-06-30 (annotated)
- Committer:
- ishiyamayuto
- Date:
- Sun Jun 30 06:57:33 2019 +0000
- Revision:
- 2:92e515e23717
- Parent:
- 1:b22208f0b32e
a
Who changed what in which revision?
User | Revision | Line number | New 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 | #define TIME_SWIM //強制的にSwimフェーズに移行させる時間 |
ishiyamayuto | 0:baa2434ead1d | 8 | #define TIME_SEND //無線送信する間隔 |
ishiyamayuto | 0:baa2434ead1d | 9 | #define NUM_CNT_MEDIAN //中央値をとる個数 |
ishiyamayuto | 0:baa2434ead1d | 10 | #define RATE_GPS //GPSのTickerを動作させるタイミング |
ishiyamayuto | 0:baa2434ead1d | 11 | |
ishiyamayuto | 0:baa2434ead1d | 12 | MPU6050 mpu(,); //mpu()の使用宣言 |
ishiyamayuto | 0:baa2434ead1d | 13 | BMP180 bmp(,); //bmp()の使用宣言 |
ishiyamayuto | 0:baa2434ead1d | 14 | Serial pc(,); //パソコンの使用宣言 |
ishiyamayuto | 0:baa2434ead1d | 15 | Serial gps(,); //GPSの使用宣言 |
ishiyamayuto | 0:baa2434ead1d | 16 | DigitalOut myled(); //??? |
ishiyamayuto | 0:baa2434ead1d | 17 | DigitalOut ES920_RST(PA_5); //??? |
ishiyamayuto | 0:baa2434ead1d | 18 | PwmOut servo1(PB_4); //サーボの使用宣言 |
ishiyamayuto | 0:baa2434ead1d | 19 | PwmOut servo2(PB_5); //サーボの使用宣言 |
ishiyamayuto | 0:baa2434ead1d | 20 | DigitalOut servo1_signal(PA_0); //サーボの使用宣言 |
ishiyamayuto | 0:baa2434ead1d | 21 | DigitalOut servo2_signal(PA_1); //サーボの使用宣言 |
ishiyamayuto | 0:baa2434ead1d | 22 | Timer timer_open; //??? |
ishiyamayuto | 0:baa2434ead1d | 23 | Timer timer_data; //??? |
ishiyamayuto | 0:baa2434ead1d | 24 | Ticker tic_gps; //??? |
ishiyamayuto | 0:baa2434ead1d | 25 | |
ishiyamayuto | 0:baa2434ead1d | 26 | /*自作関数*/ |
ishiyamayuto | 0:baa2434ead1d | 27 | void f_land(); //着水判定をする関数 |
ishiyamayuto | 0:baa2434ead1d | 28 | void f_swim(); //サーボを用いて泳ぐ関数 |
ishiyamayuto | 0:baa2434ead1d | 29 | float f_get_gps_length(); //GPSから北方向の位置を返す関数...(1) |
ishiyamayuto | 0:baa2434ead1d | 30 | float f_get_gps_width(); //GPSから東方向の位置を返す関数...(2) |
ishiyamayuto | 0:baa2434ead1d | 31 | float f_get_high(); //から高度を返す関数...(3) |
ishiyamayuto | 0:baa2434ead1d | 32 | void f_get_gps_full(); //(1)(2)を用いて自身の位置を把握する関数...(4) |
ishiyamayuto | 0:baa2434ead1d | 33 | |
ishiyamayuto | 0:baa2434ead1d | 34 | void f_get_full(); //全てのデータを取得し整理する関数。基本的に各フェーズではこの関数に頼る |
ishiyamayuto | 0:baa2434ead1d | 35 | |
ishiyamayuto | 0:baa2434ead1d | 36 | |
ishiyamayuto | 0:baa2434ead1d | 37 | |
ishiyamayuto | 0:baa2434ead1d | 38 | |
ishiyamayuto | 0:baa2434ead1d | 39 | enum Phaze{ //フェーズ定義 |
ishiyamayuto | 0:baa2434ead1d | 40 | STANDBY, |
ishiyamayuto | 0:baa2434ead1d | 41 | LEAVE_LAND, |
ishiyamayuto | 0:baa2434ead1d | 42 | SWIM, |
ishiyamayuto | 0:baa2434ead1d | 43 | FIN |
ishiyamayuto | 0:baa2434ead1d | 44 | }phaze; |
ishiyamayuto | 0:baa2434ead1d | 45 | |
ishiyamayuto | 0:baa2434ead1d | 46 | void main() //本体はここから |
ishiyamayuto | 0:baa2434ead1d | 47 | { |
ishiyamayuto | 0:baa2434ead1d | 48 | |
ishiyamayuto | 0:baa2434ead1d | 49 | while (phaze != FIN){ |
ishiyamayuto | 0:baa2434ead1d | 50 | switch(phaze){ |
ishiyamayuto | 0:baa2434ead1d | 51 | case STANDBY: //発射検知するまでがSTANDBYフェーズ |
ishiyamayuto | 0:baa2434ead1d | 52 | f_get_full(); |
ishiyamayuto | 0:baa2434ead1d | 53 | if(){ //なんらかの値がしきい値を超えたらフェーズ変更 |
ishiyamayuto | 0:baa2434ead1d | 54 | phaze = LEAVE_LAND; |
ishiyamayuto | 0:baa2434ead1d | 55 | } |
ishiyamayuto | 0:baa2434ead1d | 56 | break; |
ishiyamayuto | 0:baa2434ead1d | 57 | case LEAVE_LAND: //着水検知するまでがLEAVE_LANDフェーズ |
ishiyamayuto | 0:baa2434ead1d | 58 | f_get_full(); |
ishiyamayuto | 0:baa2434ead1d | 59 | f_land(); |
ishiyamayuto | 0:baa2434ead1d | 60 | if(){ //なんらかの値がしきい値を超えたらフェーズ変更 |
ishiyamayuto | 0:baa2434ead1d | 61 | phaze = SWIM; |
ishiyamayuto | 0:baa2434ead1d | 62 | } |
ishiyamayuto | 0:baa2434ead1d | 63 | break; |
ishiyamayuto | 0:baa2434ead1d | 64 | case SWIM: //ゴールするまでがSWIMフェーズ |
ishiyamayuto | 0:baa2434ead1d | 65 | f_get_full(); |
ishiyamayuto | 0:baa2434ead1d | 66 | if(){ //なんらかの値がしきい値を超えたらフェーズ変更 |
ishiyamayuto | 0:baa2434ead1d | 67 | phaze = FIN; |
ishiyamayuto | 0:baa2434ead1d | 68 | } |
ishiyamayuto | 0:baa2434ead1d | 69 | |
ishiyamayuto | 0:baa2434ead1d | 70 | break; |
ishiyamayuto | 0:baa2434ead1d | 71 | } |
ishiyamayuto | 0:baa2434ead1d | 72 | } |
ishiyamayuto | 0:baa2434ead1d | 73 | |
ishiyamayuto | 0:baa2434ead1d | 74 | } |